TypeScript 泛型
泛型是可以在保证类型安全的前提下,让函数等与多重类型一起工作,从而实现复用。常用于:函数、接口、class中。
泛型在定义的时候并不知道具体是什么类型,只有在调用的时候才知道是什么类型。
如下:
/* 需求:定义一个getId方法,传入一个值,返回这个值 */ function getId<T>(val: T) { return val; } console.log(getId<number>(3));//在调用的时候才知道是什么意思
console.log(getId<boolean>(true));
console.log(getId<string>('abcdef'));
上述代码中<T>是声明泛型,而val:T是使用泛型。调用泛型的时候才指定数据类型。
同时上述调用时候getId后面的<number>是可以忽略的,因为调用的时候就会判断是什么类型了,可以简化一些。
给泛型添加接口约束。
/* 泛型中的接口约束 */ interface Ilength { length: number } function getId<T extends Ilength>(val:T) { console.log(val.length); return val; } getId('hello');
此时要传入字符类型,不能传入数字类型,因为字符类型有length,但是数字类型没有。
需求:定义一个函数,参数分别为对象和属性名,根据属性名返回属性值
function getProp<O, K extends keyof O>(obj: O, key: K) { return obj[key] } const p1 = { name:'yansunda', age:18 } console.log(getProp(p1, 'name'));
这个keyof表示取的K来自于O的属性。这样子才不会报错。
分类:
前端学习 / TypeSript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】