当前位置: 首页 > news >正文

TypeScript技能总结(三)

typescript是js的超集,目前很多前端框架都开始使用它来作为项目的维护管理的工具,还在不断地更新,添加新功能中,我们学习它,才能更好的在的项目中运用它,发挥它的最大功效

//泛型 => 参数和返回值类型相同

//泛型的声明方式:
//语法:在函数名称后面添加<>,里面添加类型变量,比如下面T
//类型变量T,是一种特殊类型的变量,它处理类型而不是值
//该类型变量相当于一个类型容器,能够捕获用户提供的类型(具体是什么类型,由用户调用该函数时指定)
//因为T是类型,因此可以将其作为函数参数和返回值的类型,表示参数和返回值具有相同的类型
//变量类型type,可以是任意合法的变量名称

function id<T>(name: T): T {return name
}let num = id<number>(10)
let str = id<string>('a')
//调用的时候可以省略类型<>
let num1 = id(200)

//泛型约束
//number上就没有length属性
//此时就需要为泛型添加约束来收缩类型(缩窄类型取值范围)
//1.指定更加具体的类型

// function getId<T>(value: T): T {//之类会报错
//     console.log(value.length)
//     return value
// }// getId('zzzzzzzzz')
// getId(333333)function getId<T>(value:T[]): T[] {console.log(value.length)return value
}

//2.添加约束,是只最类型变量T进行约束

interface ILength {length:number
}
//该约束表示,传入的类型必须有length属性
function getIds<T extends ILength>(value:T):T {console.log(value.length)return value
}getIds<string>('11111111111111')
getIds([1,2,3,4,54])//错误演示
getIds(10)

//类型变量可以有多个,并且类型变量之间还可以相互约束
//keyof后面接收对象类型,生成键名,不是接收对象值

function getProps<T, K extends keyof T>(obj: T, key: K) {return obj[key] 
}let obj = {name: 'gaofeng',age:20
}getProps(obj, 'name')
getProps(obj, 'age')
getProps(18,'toFixed')//错误演示
getProps(obj, 'sex')
type c = keyof obj

//泛型接口

interface IdFunc<T>{ID: (value: T) => Tids: () => T[]
}let obj: IdFunc<number> = {ID(value) {return value},ids() {return []}
}obj.ID(1111)
```js//泛型数组
```js
const arr = ['1', '2']
arr.forEach

//泛型类

class Foo<T>{defaultValue: Tadd: (x: T, y: T) => T constructor(value: T) {this.defaultValue = value}
}
// const myNums = new Foo<number>(200)
const myNums = new Foo(200)myNums.defaultValue = 40
myNums.add(10,20)

//泛型工具类
//Partial 将所有属性设置为可选,构建出一个新的类型
//Readonly 将所有的属性设置为只读,构建出一个新的类型
//Pick 从Type中选择一组属性来构造新的类型
//Record构造一个对象类型,属性键为对象类型keyskeys,属性类型为Type

interface Props {id: string,children:number[]
}//错误演示let obj: Props = {id: '11111'//此处没加chichildren属性会报错
}type PartialProps = Partial< Props >//这里就不会报错
let obj2: PartialProps = {id:'222222222'
}type ReadonlyProps = Readonly<Props>let obj3: ReadonlyProps = {id: 'xxxxxxx',children:[22222]
}
//这里就会报错,不能修改
obj3.id = '44444444444'interface PickType {id: stringtitle: stringchildren:number[]
}type PickProps = Pick<PickType, 'id' | 'title'>let obj4: PickProps = {id: '1111111',title: 'hahahaha',
}type RecordObj = Record<'a' | 'b' | 'c', string[]>let obj6: RecordObj = {a: ['a'],b: ['c'],c: ['jjjj']
}

相关文章:

TypeScript技能总结(三)

typescript是js的超集&#xff0c;目前很多前端框架都开始使用它来作为项目的维护管理的工具&#xff0c;还在不断地更新&#xff0c;添加新功能中&#xff0c;我们学习它&#xff0c;才能更好的在的项目中运用它&#xff0c;发挥它的最大功效 //泛型 > 参数和返回值类型相…...

python绿色版运行程序,python 绿色版免安装

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python绿色版运行程序&#xff0c;python 绿色版免安装&#xff0c;今天让我们一起来看看吧&#xff01; 软件简介 Python3.7.0 是一种被广大从业者广泛使用的通用型设计语言。该软件提供了丰富全面的模块&#xff0c;并…...

Python 向Excel写数据

1.项目终端导入 xlwt 库 pip install xlwt2.导入依赖包 import xlwt3.创建Excel表格类型文件 调用xlwt模块中的Workbook方法来创建一个excel表格类型文件&#xff0c;其中的第一个参数是设置数据的编码格式&#xff0c;这里是’utf-8’的形式&#xff0c;style_compression设…...

MySQL(1)

MySQL创建数据库和创建数据表 创建数据库 1. 连接 MySQL mysql -u root -p 2. 查看当前的数据库 show databases; 3. 创建数据库 create database 数据库名; 创建数据库 4. 创建数据库时设置字符编码 create database 数据库名 character set utf8; 5. 查看和显示…...

Android10 Recovery系列(二)增加OTG升级功能

一 、背景 起因是遇到了客户有这个需求,本着了解的原则,去看了一下之前Android版本的代码,想看看之前有没有现成的实现,移植过来。结果很不幸,没有找到。于是自己开始了功能实现的过程。下面分享一下该功能的实现 二 、准备工作 首先简单了解一下Recovery 模块的系统升…...

el-popover使用自定义图标

使用el-popover实现鼠标点击或浮动到自定义图标上弹出表格弹窗&#xff0c;官方文档上使用的是按钮el-button&#xff0c;如果想换成图标或其他的组件的话直接把el-button替换掉即可。注意替换之后的组件一定要加slot“reference”&#xff0c;不然组件是显示不出来的。 代码如…...

KCOM4串口转键鼠控制线测试说明

1.KOCM4介绍 KCOM4是一款最新开发的串口转键盘鼠标控制线&#xff0c;采用32位内核&#xff0c;最大60Mhz的工作频率&#xff0c;完美适用于游戏挂机等应用场景&#xff08;如果是用在工作电脑控制或展厅电脑控制推荐CH9329双头线&#xff09;。KCOM4支持普通键盘、相对鼠标、…...

2023华数杯数学建模C题完整5问代码思路分析

目前已经写出2023华数杯C题母亲身心健康对婴儿成长的影响全部5问的完整代码和42页论文&#xff08;正文30页&#xff0c;论文部分摘要如下&#xff1a; 本文共解决了五个问题&#xff0c;涉及婴儿行为特征、睡眠质量与母亲的身体指标和心理指标的关系&#xff0c;以及如何优化…...

02_kafka_基本概念_基础架构

文章目录 常见的消息队列工作模式基本概念kafka 特性Kafka 基本架构topic 分区的 目的/ 好处 日志存储形式消费者&#xff0c;消费方式 逻辑消费组 高性能写入&#xff1a; 顺序写 mmap读取&#xff1a;零拷贝DMA 使用场景 常见的消息队列工作模式 至多一次&#xff1a;消息被…...

HTTP 常用状态码 301 302 304 403

HTTP 常用状态码 301 302 304 403 301 永久重定向&#xff0c;浏览器会把重定向后的地址缓存起来&#xff0c;将来用户再次访问原始地址时&#xff0c;直接引导用户访问新地址 302 临时重定向&#xff0c;浏览器会引导用户进入新地址&#xff0c;但不会缓存原始地址&#xff0c…...

分布式 - 服务器Nginx:一小时入门系列之静态网页配置

文章目录 1. 静态文件配置2. nginx listen 命令解析3. nginx server_name 命令解析4. nginx server 端口重复5. nginx location 命令 1. 静态文件配置 在 /home 文件下配置一个静态的AdminLTE后台管理系统&#xff1a; [rootnginx-dev conf.d]# cd /home [rootnginx-dev home…...

kubernetes网络之网络策略-----Network Policies - Example

创建一个Deployment并配置Service 创建一个 nginx Deployment 用于演示 Kubernetes 的 NetworkPolicy&#xff1a; kubectl create deployment nginx --imagenginx 输出结果 deployment.apps/nginx created通过Service暴露该Deployment kubectl expose deployment nginx --po…...

【GDI/GDI+】如何抓取屏幕保存到bitmap文件?

问题 如何抓取屏幕保存到bitmap文件&#xff1f; 方法 GDI 方法 1、抓取。 HBITMAP CRectChartUI::GetBitmap(HDC hDC) {HDC hMemDC;int x, y;int nWidth, nHeight;HBITMAP hBitmap, hOldBitmap;hMemDC CreateCompatibleDC(hDC);nWidth GetDeviceCaps(hDC, HORZRES);nHei…...

HDFS介绍

目录 ​编辑 一、HDFS基础 1.1 概述 1.2 HDFS的设计目标 1.2.1 硬件故障 1.2.2 流式数据访问 1.2.3 超大数据集 1.2.4 简单的一致性模型 1.2.5 移动计算而不是移动数据 1.2.6 跨异构硬件和软件平台的可移植性 1.3 基础概念 1.3.1 块&#xff08;Block&#xff09; 1.3.2 复制…...

每日一题——两数之和

题目 给出一个整型数组 numbers 和一个目标值 target&#xff0c;请在数组中找出两个加起来等于目标值的数的下标&#xff0c;返回的下标按升序排列。 &#xff08;注&#xff1a;返回的数组下标从1开始算起&#xff0c;保证target一定可以由数组里面2个数字相加得到&#xff0…...

Maven: ‘mvn‘ is not recognized as an internal or external command

下载并配置好Maven之后&#xff0c;CMD测试安装是否成功&#xff1a;mvn -v 提示&#xff1a; mvn is not recognized as an internal or external command, operable program or batch file. 检查环境变量&#xff1a; MAVEN_HOME: %MAVEN_HOME%\bin: 看上去没问题&#x…...

CubeSLAM: Monocular 3D Object SLAM——论文简述

一、简介 提出一种在动态和静态环境中同时进行3D目标检测和定位建图的方法&#xff0c;并且能够互相提升准确度。具体地&#xff0c;对于3D目标&#xff0c;其位置、方向和尺寸通过slam进行了优化&#xff1b;而3D目标作为slam中的路标&#xff0c;可以提供额外的语义和几何约…...

【雕爷学编程】MicroPython动手做(30)——物联网之Blynk 2

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…...

linux scp 拷贝文件到目标linux系统

scp -P 8866 -r jsonrpc/ root192.168.6.66:/folder_path...

Oracle-expdp报错ORA-39077、06502(Bug-16928674)

问题: 用户在使用expdp进程导出时&#xff0c;出现队列报错ORA-39077、ORA-06502 ORA-31626: job does not exist ORA-31638: cannot attach to job SYS_EXPORT_SCHEMA_01 for user SYS ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95 ORA-06512: at "SYS.KUPV$…...

如何快速掌握NoteGen AI笔记:新手入门完整指南

如何快速掌握NoteGen AI笔记&#xff1a;新手入门完整指南 【免费下载链接】note-gen 一款专注于记录和写作的跨端 AI 笔记应用。 项目地址: https://gitcode.com/GitHub_Trending/no/note-gen 在信息爆炸的时代&#xff0c;高效记录和管理知识已成为现代人的刚需。Note…...

如何用G-Helper实现CPU降压调优:华硕笔记本用户的散热与续航提升指南

如何用G-Helper实现CPU降压调优&#xff1a;华硕笔记本用户的散热与续航提升指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other mo…...

Power BI视觉对象交互设计秘籍--巧用书签按钮实现动态提示

1. 为什么需要动态提示功能&#xff1f; 做数据分析报表最怕什么&#xff1f;不是数据不准&#xff0c;而是看报表的人看不懂。我见过太多这样的场景&#xff1a;精心设计的柱状图被用户误读&#xff0c;复杂的折线图被理解成完全相反的趋势。这时候你会想&#xff0c;要是有个…...

别再踩坑了!AgentScope调用本地MCP服务,用StdIOStatefulClient才是正确姿势

深度解析AgentScope集成MCP服务的正确实践&#xff1a;从协议匹配到高效调试 在AI应用开发领域&#xff0c;服务集成是构建复杂系统的关键环节。当开发者尝试将AgentScope与MCP服务结合时&#xff0c;往往会遇到各种意料之外的连接问题。这些问题的根源通常不在于代码逻辑本身&…...

如何利用系统提示词革新开源项目的AI功能实现

如何利用系统提示词革新开源项目的AI功能实现 【免费下载链接】system_prompts_leaks 项目地址: https://gitcode.com/GitHub_Trending/sy/system_prompts_leaks 在人工智能技术快速发展的今天&#xff0c;系统提示词已成为解锁AI潜能的关键钥匙。对于开源项目而言&…...

文脉定序系统处理多语言语义排序实战:跨语言检索效果展示

文脉定序系统处理多语言语义排序实战&#xff1a;跨语言检索效果展示 你有没有遇到过这样的烦恼&#xff1f;想找一份关于“机器学习”的日文资料&#xff0c;却只能用中文关键词去搜&#xff0c;结果要么搜不到&#xff0c;要么搜出来的东西完全不对路。或者&#xff0c;你手…...

3步实现Mac微信防撤回:零配置本地化解决方案

3步实现Mac微信防撤回&#xff1a;零配置本地化解决方案 【免费下载链接】WeChatIntercept 微信防撤回插件&#xff0c;一键安装&#xff0c;仅MAC可用&#xff0c;支持v3.7.0微信 项目地址: https://gitcode.com/gh_mirrors/we/WeChatIntercept 告别消息遗憾&#xff1…...

别再让DeepSeek-R1的<think>标签刷屏了!手把手教你用API和Python脚本一键隐藏思考过程

高效隐藏DeepSeek-R1思考过程的工程实践 当你在深夜调试一个集成DeepSeek-R1的客服系统时&#xff0c;终端突然被满屏的<think>标签刷爆——这种场景对开发者来说再熟悉不过了。作为一款强调推理过程的大语言模型&#xff0c;DeepSeek-R1默认会在输出中包含详细的思考步骤…...

Onnxruntime模型量化实战:从PTQ到精度调优

1. Onnxruntime模型量化入门指南 第一次接触模型量化时&#xff0c;我也被各种术语搞得晕头转向。简单来说&#xff0c;量化就是把模型参数从32位浮点数转换为8位整数&#xff0c;就像把高清图片压缩成更小的文件。Onnxruntime作为业界领先的推理引擎&#xff0c;提供了完整的量…...

PasteMD场景应用:微信聊天记录自动整理为会议纪要

PasteMD场景应用&#xff1a;微信聊天记录自动整理为会议纪要 1. 为什么你的会议纪要总是一团糟&#xff1f; 想象一下这个场景&#xff1a; 下午两点&#xff0c;项目组紧急拉了个微信群聊&#xff0c;大家七嘴八舌讨论了半小时&#xff0c;敲定了五个关键事项和三个责任人。…...