位置: IT常识 - 正文

TS中的泛型(泛型 static)

编辑:rootadmin
TS中的泛型 文章目录一、泛型是什么?有什么作用二、泛型用法2.1 在函数中使用泛型2.2 在接口中使用泛型2.3 在类中使用泛型三、泛型约束3.1使用接口约束泛型3.2 数组泛型四、泛型工具类型4.1 Partial4.2 Record4.3 Pick4.4 Exclude4.5 ReturnType一、泛型是什么?有什么作用

推荐整理分享TS中的泛型(泛型 static),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:t 泛型,t 泛型,ts泛型传入多个参数,mapstruct 泛型,ts泛型传入多个参数,ts中的泛型作用,t 泛型,ts泛型传入多个参数,内容如对您有帮助,希望把文章链接给更多的朋友!

当我们定义一个变量不确定类型的时候有两种解决方式:

使用any 使用any定义时存在的问题:虽然 以 知道传入值的类型但是无法获取函数返回值的类型;另外也失去了ts类型保护的优势使用泛型 泛型指的是在定义函数/接口/类型时,不预先指定具体的类型,而是在使用的时候在指定类型限制的一种特性。二、泛型用法2.1 在函数中使用泛型function test <T> (arg:T):T{ console.log(arg); return arg;}test<number>(111);// 返回值是number类型的 111test<string | boolean>('hahaha')//返回值是string类型的 hahahatest<string | boolean>(true);//返回值是布尔类型的 true

使用方式类似于函数传参,传什么数据类型,T就表示什么数据类型, 使用表示,T也可以换成任意字符串。

2.2 在接口中使用泛型// 注意,这里写法是定义的方法哦interface Search { <T,Y>(name:T,age:Y):T}let fn:Search = function <T, Y>(name: T, id:Y):T { console.log(name, id) return name;}fn('li',11);//编译器会自动识别传入的参数,将传入的参数的类型认为是泛型指定的类型2.3 在类中使用泛型class Animal<T> { name:T; constructor(name: T){ this.name = name; } action<T>(say:T) { console.log(say) }}let cat = new Animal('cat');cat.action('mimi')三、泛型约束3.1使用接口约束泛型interface Person { name:string; age:number;}function student<T extends Person>(arg:T):T { return arg;}student({name:'lili'});//类型 "{ name: string; }" 中缺少属性 "age",但类型 "Person" 中需要该属性student({ name: "lili" , age:'11'});//不能将类型“string”分配给类型“number”student({ name: "lili" , age:11});3.2 数组泛型TS中的泛型(泛型 static)

let arr:Array<number> =[1,2,3] === let arr:number[]=[1,2,3]

四、泛型工具类型4.1 Partial

partial<T>的作用就是将某个类型中的属性全部变为可选项? 示例:

interface Person { name:string; age:number;}function student<T extends Person>(arg: Partial<T>):Partial<T> { return arg;}4.2 Record

Record<K extends keyof any, T>的作用是将K中所有的属性转换为T类型;示例:

interface PageInfo { title: string}type Page = 'home'|'about'|'other';const x: Record<Page, PageInfo> = { home: { title: "xxx" }, about: { title: "aaa" }, other: { title: "ccc" },};4.3 Pick

Pick<T, K extends keyof T>的作用是将某个类型中的子属性挑出来,变成包含这个类型部分属性的子类型,示例:

interface Todo { title:string, desc:string, time:string}type TodoPreview = Pick<Todo, 'title'|'time'>;const todo: TodoPreview ={ title:'吃饭', time:'明天'}4.4 Exclude

Exclude<T,U>的作用是将某个类型中属于另一个类型的属性移除掉,示例:

type T0 = Exclude<"a" | "b" | "c", "a">; // "b" | "c"const t:T0 ='b';4.5 ReturnType

returnType<T>的作用是用于获取函数T的返回类型,示例:

type T0 = ReturnType<() => string>; // stringtype T1 = ReturnType<(s: string) => void>; // voidtype T2 = ReturnType<<T>() => T>; // {}type T3 = ReturnType<<T extends U, U extends number[]>() => T>; // number[]type T4 = ReturnType<any>; // anytype T5 = ReturnType<never>; // anytype T6 = ReturnType<string>; // Errortype T7 = ReturnType<Function>; // Error

暂时先了解这么多,后续继续补充…

本文链接地址:https://www.jiuchutong.com/zhishi/298333.html 转载请保留说明!

上一篇:作为大学生,你还不会搭建chatGPT微应用吗?(作为大学生你能为国家安全贡献哪些力量论文)

下一篇:权重衰减/权重衰退——weight_decay(权重下降是什么原因)

  • vivox70pro怎么连接蓝牙耳机(vivox70Pro怎么连接蓝牙耳机)

    vivox70pro怎么连接蓝牙耳机(vivox70Pro怎么连接蓝牙耳机)

  • 饿了么骑手怎么加入的(饿了么骑手怎么加入全职)

    饿了么骑手怎么加入的(饿了么骑手怎么加入全职)

  • 荣耀手机广角在哪里打开(荣耀手机广角在哪里设置)

    荣耀手机广角在哪里打开(荣耀手机广角在哪里设置)

  • 苹果8p如何设置门卡(苹果8p如何设置灵动岛)

    苹果8p如何设置门卡(苹果8p如何设置灵动岛)

  • iPhone水印怎么弄(iphone水印怎么设置)

    iPhone水印怎么弄(iphone水印怎么设置)

  • x3430cpu配什么主板(x3430 cpuz)

    x3430cpu配什么主板(x3430 cpuz)

  • 淘宝订单看不到备注(淘宝订单看不到自动确认收货时间)

    淘宝订单看不到备注(淘宝订单看不到自动确认收货时间)

  • 朋友圈只发定位不发内容(微信的朋友圈定位可以随意发送位置?)

    朋友圈只发定位不发内容(微信的朋友圈定位可以随意发送位置?)

  • 微信打字覆盖后面的字怎么办(微信打字覆盖后面的内容)

    微信打字覆盖后面的字怎么办(微信打字覆盖后面的内容)

  • 快手拉黑对方同城还能看见吗(快手拉黑后对方)

    快手拉黑对方同城还能看见吗(快手拉黑后对方)

  • vivonex3防不防水(vivonex35g防水吗)

    vivonex3防不防水(vivonex35g防水吗)

  • coloros7是什么(coloros是什么型号)

    coloros7是什么(coloros是什么型号)

  • airpods更换一只耳机怎么重新配对(airpods更换一只新的要多少钱)

    airpods更换一只耳机怎么重新配对(airpods更换一只新的要多少钱)

  • 无线蓝牙耳机怎么连接手机只有一个有声音(无线蓝牙耳机怎么接电话)

    无线蓝牙耳机怎么连接手机只有一个有声音(无线蓝牙耳机怎么接电话)

  • qq群接龙是干什么的(qq群里的群接龙是什么东西)

    qq群接龙是干什么的(qq群里的群接龙是什么东西)

  • qq以前的照片在哪里找(qq里以前的照片在哪里可以找到)

    qq以前的照片在哪里找(qq里以前的照片在哪里可以找到)

  • 卖了天猫积分对淘宝号有影响吗(天猫积分卖钱)

    卖了天猫积分对淘宝号有影响吗(天猫积分卖钱)

  • 天猫精灵ccl怎么恢复出厂设置(天猫精灵CCL怎么下载钉钉吗)

    天猫精灵ccl怎么恢复出厂设置(天猫精灵CCL怎么下载钉钉吗)

  • 手机怎么设置网速快(手机怎么设置网络密码)

    手机怎么设置网速快(手机怎么设置网络密码)

  • ipx5防水的实际意义(ipx5防水效果)

    ipx5防水的实际意义(ipx5防水效果)

  • windows自带杀毒怎么关闭(windows自带杀毒软件在哪)

    windows自带杀毒怎么关闭(windows自带杀毒软件在哪)

  • 如何激活手机内存卡(手机怎么激活内存卡)

    如何激活手机内存卡(手机怎么激活内存卡)

  • xr全网通是什么基带

    xr全网通是什么基带

  • QQ音乐界面模糊怎么回事(qq音乐画面)

    QQ音乐界面模糊怎么回事(qq音乐画面)

  • 如何压缩文件打包发送(如何压缩文件打包发送微信)

    如何压缩文件打包发送(如何压缩文件打包发送微信)

  • 图像处理及深度学习开源数据集大全(四万字呕心沥血整理)(图像深度算法)

    图像处理及深度学习开源数据集大全(四万字呕心沥血整理)(图像深度算法)

  • 怎么进行增值税纳税申报
  • 在外地预缴的印花税如何扣除
  • 金税财务是干什么的
  • 累计折旧贷方余额表示
  • 银行存款属于其他货币资金核算内容吗
  • 上传附报资料在哪下载
  • 小规模纳税人零申报要报哪些税
  • 预付房租摊销账务处理
  • 工程款先开票
  • 股东借款转实收资本需要什么附件
  • 医疗器械行业进销存软件
  • 生产部门的费用计入什么科目
  • 为什么要预提企业收入
  • 开票商品名称是什么意思
  • 增值税农产品扣除率
  • 增值税专用发票跨月退回怎么办?
  • 建筑行业增值税是多少
  • 税审计入什么科目?
  • 哪些行为违反法律但不违反道德
  • 科研项目经费怎么填
  • win11怎么设置声音
  • 增值税专用发票有几联?
  • 如何给电脑文件加密并设置密码
  • cmd. exe 程序错误
  • 增值税中的筹划方法哪些可以应用在消费税中,为什么?
  • 外资企业采购退税流程
  • php数组函数,选班长
  • PHP:imagestringup()的用法_GD库图像处理函数
  • vue3官方教程
  • 即插即用是什么意思?
  • opencv 边缘检测
  • linux调试工具有哪些
  • 汇编语言a命令怎么用
  • 微信转账怎么处理退回去
  • mkfifo命令
  • 赊购材料尚未支付的款项属于什么科目
  • 汇算清缴所得税是什么意思
  • python 平均函数
  • 怎么升级一般纳税人
  • sql注入漏洞不会出现在哪个位置
  • vscode开发gui
  • 个人所得税进一步改革方向
  • 企业所得税的扣除是什么意思
  • 使用mysql的disctinct group by查询不重复记录
  • 视同销售的情况是?
  • 以货换货什么意思
  • 红字申请单如何打印出来
  • 企业外购的无形资产的成本包括
  • 外经证是干什么用的
  • 新成立的公司发朋友圈文案
  • 咨询服务费如何合理避税
  • 租房发票如何做分录
  • 请问,制造企业有哪些?
  • 小规模纳税人进项可以抵扣吗
  • 在sql server数据库中
  • mysqld占用cpu高
  • 注册表 启动
  • linux如何查询
  • mac安装windows10体验
  • linux系统检测
  • linux ls常用命令
  • win7装win8系统教程
  • win7网络访问权限
  • 如果打招呼了不理是什么原因
  • win 10预览版
  • android中使用md5后报非法延续字节
  • android实现推送
  • shell编程怎么执行
  • bat批处理命令大全
  • linux查看远程服务是否开启
  • socket.io与pm2(cluster)集群搭配的解决方案
  • imagelearning
  • python复制sheet
  • 运输费用抵扣税率最新规定
  • 福州税务局几点关门
  • 纳税申报的期限是多久
  • pppoe账号密码改了连不上网
  • 目前长沙二手房出售信息
  • 统一社会信用代码有什么用
  • 个人所得税的工资比实际的多
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设