泛型
泛型(Generics)是指在定义函数、接口或者类的时候, 不预先指定其类型,而是在使用是手动指定其类型的一种特性。
在typescript中函数的参数必须指定类型,但有时候我们不需要指定类型,希望根据传递的参数自动指定其类型
//函数中使用泛型 //传递什么类型和返回什么类型,TS自行推断 function identify<T>(arg: T): T { console.log(arg); return arg; } //明确指定类型,这里指定的是string类型 identify<string>("string"); //交给ts自动推断 identify([1, 2]);
接口中使用泛型
//接口中使用泛型 interface PersonInterface { <T>(arg: T): T; } let myFun: PersonInterface = identify; myFun<string>("接口泛型");
为泛型添加约束
//例如obj没有length属性,但是我们规定obj必须有length属性 function getLength<T extends { length: number }>(obj: T): any { return obj; } const obj = { name: "张三", age: 18, length: 2 }; console.log(getLength(obj));
指定泛型的类型
例如以下代码指定了泛型必须是number
function getLengths<T extends number>(obj: T): any { return obj; } const obj1 = 25; console.log(getLengths(obj1));
泛型在class中使用
class CountNumber<T> { number1: T; number2: T; constructor(number1: T, number2: T) { this.number1 = number1; this.number2 = number2; } calca(): number { return +this.number1 + +this.number2; } } const num = new CountNumber<number>(2, 10); console.log(num.calca());
发表评论
侧栏公告
寄语
譬如朝露博客是一个分享前端知识的网站,联系方式11523518。
热评文章
标签列表
热门文章
友情链接