位置: 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(权重下降是什么原因)

  • 华为nova9怎么投屏(华为nova9怎么投屏到联想小新)

    华为nova9怎么投屏(华为nova9怎么投屏到联想小新)

  • DFU模式是什么意思(dfu模式数据还在吗)

    DFU模式是什么意思(dfu模式数据还在吗)

  • 苹果手机误删照片可以恢复吗(苹果手机误删照片图标怎么恢复)

    苹果手机误删照片可以恢复吗(苹果手机误删照片图标怎么恢复)

  • 抖音作品怎样设置成私密(抖音作品怎样设置不让别人看到)

    抖音作品怎样设置成私密(抖音作品怎样设置不让别人看到)

  • 苹果11分辨率是(苹果11分辨率是多少)

    苹果11分辨率是(苹果11分辨率是多少)

  • word文档数字怎么变了(word文档数字怎么加圈)

    word文档数字怎么变了(word文档数字怎么加圈)

  • 淘宝搜索的流量包括什么(淘宝搜索的流量怎么算)

    淘宝搜索的流量包括什么(淘宝搜索的流量怎么算)

  • 华为智能识屏(华为智能识屏怎么识别文字)

    华为智能识屏(华为智能识屏怎么识别文字)

  • ipad长按不能关机(ipad长按关机键关不了机)

    ipad长按不能关机(ipad长按关机键关不了机)

  • 咸鱼有手续费么(闲鱼 有手续费吗)

    咸鱼有手续费么(闲鱼 有手续费吗)

  • 荣耀20s支持超级快充吗(华为荣耀20s支持超级快充吗)

    荣耀20s支持超级快充吗(华为荣耀20s支持超级快充吗)

  • 为什么qq昵称改了还是显示之前的(为什么QQ昵称改了下面列表还是改不了)

    为什么qq昵称改了还是显示之前的(为什么QQ昵称改了下面列表还是改不了)

  • excel如何把0变成空白(excel如何把0变成空白,10不变)

    excel如何把0变成空白(excel如何把0变成空白,10不变)

  • ipadair2是什么芯片(ipadair2芯片是a9吗)

    ipadair2是什么芯片(ipadair2芯片是a9吗)

  • 光猫pon是什么意思(光猫pon灯亮是怎么回事)

    光猫pon是什么意思(光猫pon灯亮是怎么回事)

  • dvd和cd光盘有什么区别(cd和dvd光盘的区别)

    dvd和cd光盘有什么区别(cd和dvd光盘的区别)

  • 美图秀秀怎么去logo(美图秀秀怎么去水印logo)

    美图秀秀怎么去logo(美图秀秀怎么去水印logo)

  • breeon怎么关闭(brnneo怎么关闭)

    breeon怎么关闭(brnneo怎么关闭)

  • 华为watch gt2尊享版什么时候上市(华为watch gt2尊享版价格)

    华为watch gt2尊享版什么时候上市(华为watch gt2尊享版价格)

  • word是英文版怎么改成中文(word英文版怎么调行距)

    word是英文版怎么改成中文(word英文版怎么调行距)

  • 怎么样把手机内存转移到内存卡上(怎么样把手机内部储存移到sD卡)

    怎么样把手机内存转移到内存卡上(怎么样把手机内部储存移到sD卡)

  • 勿扰模式通知怎么关闭(勿扰模式消息提醒)

    勿扰模式通知怎么关闭(勿扰模式消息提醒)

  • 小米9充电发热怎么回事(小米9充电发热严重怎么办)

    小米9充电发热怎么回事(小米9充电发热严重怎么办)

  • 怎么把a3复印成a4(如何将a3复印成a4纸)

    怎么把a3复印成a4(如何将a3复印成a4纸)

  • 如何管理和维护RHCS集群(如何管理和维护企业微信客户)

    如何管理和维护RHCS集群(如何管理和维护企业微信客户)

  • 企业所得税优惠政策最新2023小规模纳税人
  • 全面一次性奖金收入扣税标准
  • 年审和税审的区别是什么
  • 手工发票可以抵增值税吗
  • 固定资产未付款怎么入账
  • 发票面额增大
  • 工商年报实缴出资额是实收资本吗
  • 小规模纳税检查怎么做
  • 债转股资金
  • 吸收合并的税务处理增值税风险
  • 购房所需的税费种类和费用
  • 暂估发票到账出入库单要填吗
  • 股权变更前账务怎么处理
  • 隔月发票红冲,交税怎么交
  • 税务机关办理扣税流程
  • 发票融资贷款应该怎么做账?
  • 新成立公司注资流程
  • 分票报关合票出提单怎么清关
  • 股权转让以前年度怎么算
  • 开了增值税发票不确认收入可以吗
  • 企业怎么进行税务申报
  • 一般纳税人开普票要交税吗
  • 外购已抵扣进项税额
  • 拍卖所得房产计税依据
  • 员工娱乐活动比赛项目
  • 个税逾期申报怎么缴纳罚款
  • 什么是票据权利?票据权利的内容有哪些
  • 公司增资的方式有什么
  • windows缺失
  • centos停止发布
  • 材料成本差异如何理解
  • php数组函数,选班长
  • 其他应收款可以和其他应付款对冲吗
  • 企业收到的保险理赔款会计分录
  • 延期支付土地款利息会计处理
  • php使用自定义函数编程求半径r的圆的周长和面积
  • 图片转base64格式返回给前端,前端如何展示?
  • 营改增抵减的销项税发票要抵扣吗
  • 子公司提取盈余公积 合并抵消
  • 发票密码区如何调整
  • 原材料用于在建工程,进项税为什么不转出
  • 极速开票怎么打不开
  • 零申报企业所得税怎么申报
  • 企业之间收的借款利息该如何交税 原文
  • python elasticsearch timeout
  • mysql查看创建表代码
  • 企业年报股东出资信息
  • 税控盘和维护费440元抵减增值税吗
  • 预收账款是负债增加还是减少
  • 社保缴费如何做账
  • 经营租赁方式租入再转租的建筑物
  • 库存股 注销
  • 漏缴增值税处罚规定
  • 财务分析与财务管理的共同点
  • 其他应付款的核算项目是什么
  • 小微企业免征增值税优惠政策
  • 长期挂账的其他应付款税务风险
  • 购入固定资产的会计科目
  • 买入返售证券什么意思
  • 超市购物卡怎么办理
  • sqlserver附加数据库时出错,请单击消息中的超链接
  • 直接玩鬼泣4
  • centos6.5双网卡绑定
  • windows注册账号
  • linux的命令行指的是什么
  • unity 插件开发
  • cmd开机启动命令
  • 批处理禁用计算机
  • bootstrap弹出表单
  • javascript高级程序设计pdf百度云
  • 实现 java
  • numpy使用心得
  • jQuery bt气泡实现悬停显示及移开隐藏功能的方法
  • flask框架下使用scrapy框架
  • 税务局航天信息的操作流程
  • 上季度报表错误怎样更正
  • 税务处理决定书属于行政处罚吗
  • 自用的房产怎么交房产土地税
  • 免抵退税办法不得抵扣的进项
  • 如何查询车辆购买的保险是哪家保险公司
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设