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

  • 微信红包提醒怎么关闭(微信红包提醒怎么开启)

    微信红包提醒怎么关闭(微信红包提醒怎么开启)

  • 如何修改微信支付密码怎么修改(如何修改微信支付顺序)

    如何修改微信支付密码怎么修改(如何修改微信支付顺序)

  • 苹果xr怎么清理微信里面占用的内存(苹果xr怎么清理系统数据缓存)

    苹果xr怎么清理微信里面占用的内存(苹果xr怎么清理系统数据缓存)

  • iphone11双卡双待吗(iphone11双卡双待怎么切换)

    iphone11双卡双待吗(iphone11双卡双待怎么切换)

  • 充电宝充电口坏了怎么修理(充电宝充电口坏了修要多少钱)

    充电宝充电口坏了怎么修理(充电宝充电口坏了修要多少钱)

  • 抖音不签公会直播分成多少(抖音不签公会直播怎么办)

    抖音不签公会直播分成多少(抖音不签公会直播怎么办)

  • 闲鱼玩家全网影响力一直在审核(闲鱼中闲鱼玩家是什么意思)

    闲鱼玩家全网影响力一直在审核(闲鱼中闲鱼玩家是什么意思)

  • qq邮箱文件如何下载到桌面(qq邮箱文件如何下载到u盘)

    qq邮箱文件如何下载到桌面(qq邮箱文件如何下载到u盘)

  • 支付宝怎么设置密码锁不让别人看(支付宝怎么设置密码锁屏)

    支付宝怎么设置密码锁不让别人看(支付宝怎么设置密码锁屏)

  • 华为手机如何输入根号(华为手机如何输入中文)

    华为手机如何输入根号(华为手机如何输入中文)

  • 腾讯会员微信注册可以几个人用(腾讯会员微信注销后微信还能用吗)

    腾讯会员微信注册可以几个人用(腾讯会员微信注销后微信还能用吗)

  • oppox2pro什么时候上市(oppo find x2 pro什么时候开售)

    oppox2pro什么时候上市(oppo find x2 pro什么时候开售)

  • 荣耀note8支持内存卡吗(荣耀note8支持otc吗?)

    荣耀note8支持内存卡吗(荣耀note8支持otc吗?)

  • 电脑锁屏键盘按哪个键(电脑锁屏键盘失灵怎么办)

    电脑锁屏键盘按哪个键(电脑锁屏键盘失灵怎么办)

  • ps怎么给字体加边框(ps怎么给字体加颜色)

    ps怎么给字体加边框(ps怎么给字体加颜色)

  • 爱天使电话手表卡怎么装(爱天使电话手表怎么调时间和日期)

    爱天使电话手表卡怎么装(爱天使电话手表怎么调时间和日期)

  • 华为nove5p耳机孔在哪(华为nove5耳机插孔)

    华为nove5p耳机孔在哪(华为nove5耳机插孔)

  • 怎样修改程序软件(怎样修改软件程序)

    怎样修改程序软件(怎样修改软件程序)

  • 华为p30pro耗电快是什么原因(华为p30pro耗电快二手回收价)

    华为p30pro耗电快是什么原因(华为p30pro耗电快二手回收价)

  • 打印图片怎么设置白底(打印图片怎么设置彩色)

    打印图片怎么设置白底(打印图片怎么设置彩色)

  • 一个手机可以注册几个抖音号(一个手机可以注册几个qq号码)

    一个手机可以注册几个抖音号(一个手机可以注册几个qq号码)

  • iqoo左边的键什么用(iq00左边的按键是什么)

    iqoo左边的键什么用(iq00左边的按键是什么)

  • 如何清除微信里的图片(如何清除微信里浏览器记录)

    如何清除微信里的图片(如何清除微信里浏览器记录)

  • 手机私密文件在哪里(手机私密文件在哪里找OPPO)

    手机私密文件在哪里(手机私密文件在哪里找OPPO)

  • 织梦DEDECMS搜索提交用a便签替换button标签方法(织梦cms怎么样)

    织梦DEDECMS搜索提交用a便签替换button标签方法(织梦cms怎么样)

  • 织梦自动提取关键字无法关闭的解决方法(织梦如何做提取卡密)

    织梦自动提取关键字无法关闭的解决方法(织梦如何做提取卡密)

  • 其他权益工具投资科目编码
  • 计提维保费
  • 个人所得税个体户减半
  • 租办公室自己装修可以拆走吗
  • 个人报销电话费怎么做分录
  • 领用低值易耗品的记账凭证
  • 汇兑损益属于企业成本吗
  • 不动产初始登记流程
  • 一般纳税人税负率一般控制在多少?法律依据
  • 应付账款逾期利息会计分录
  • 福利费用计入
  • 公司缴纳社保要多久
  • 孵化器 怎么赚钱
  • 物业公司代收水费亏损谁承担
  • 现金短缺属于出纳员负责如何做会计处理
  • 两免三减半适用范围
  • 所有者权益为什么是负债
  • 分项结转法怎么结转
  • bootmgr is missing怎么手动解决
  • 企业债卷利息收入是营业收入吗
  • 光纤测速网速测试
  • win10怎么更换版本
  • php最新动态
  • 事业单位年末收入怎么算
  • win切换平板模式
  • 补充养老保险税收规定扣除率
  • 个税手续费会计分录
  • 代开票作废税未退该如何分录?
  • 库存现金意思
  • 融资租赁增值税税目
  • 民办非企业单位登记管理暂行条例
  • yolov5源码讲解
  • 怎么编制资金平衡表格
  • web搜索与挖掘
  • ifconfig命令配置地址
  • php 短信验证码
  • 房租费发票可以抵扣增值税吗
  • 利息支出是利息费用嘛
  • 通讯费补贴会计怎么做账
  • 企业接受的非货币性投资按照 计入实收资本
  • 公司的基本户怎么换
  • 向股东免息借款怎么做账
  • 房地产企业买地
  • 侵权赔偿补偿金如何计算
  • 佣金的会计如何计算
  • 网购会计如何确认成本
  • mysql数据库排序
  • 党费会计核算科目有哪些
  • 日常费用报销表格
  • 电脑买回来可以直接用吗
  • 不征税收入与免税收入的区别是什么
  • 事业单位现金收支流程图
  • 报表与账不符情况说明
  • 企业刚注册成功又要注销要什么手续
  • 走逃失联企业管理办法
  • 房屋租赁合同税率多少
  • 挂靠公司收的税费计入什么科目?
  • 小规模纳税人没有进项发票违法吗
  • 客户从公司借钱怎么拒绝
  • 成品油发票的勾选方法
  • 仓库货架应该计入什么科目
  • 现金日记账是什么帐
  • SQLserver中cube:多维数据集实例详解
  • xampp网页服务器配置文件名
  • 微软补丁修复时出现蓝屏现象
  • windows电脑加速
  • win8搜索程序和文件在哪里
  • xp启动加速
  • mac与windows的使用区别
  • 红石cpu教程
  • vs2013怎么配置环境
  • cocos2dx4.0教程
  • Unity3D游戏开发培训课程大纲
  • javascript有哪些类型
  • pymysql作用
  • javascript字符
  • python27文件夹
  • 风力发电税收优势分析
  • 青岛市税务局归谁管
  • 辽宁省地方税务局公告2014年第10号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设