泛型(Generic)
一个函数或类,在无法确定其中要使用的具体类型(返回值、参数、属性的类型不能确定);此时泛型便能够发挥作用;
泛型函数
这里的<T>就是泛型;T可以是任意值
设置泛型后即可在函数中使用T来表示该类型
所以泛型其实很好理解,就表示某个类型;
function test<T>(arg: T): T{
return arg;
}
test(10) //第一种调用
test<number>(10) //第2种调用
这两种方法都可以调用泛型函数
函数中声明多个泛型
function test<T, K>(a: T, b: K): K{
return b;
}
test<number, string>(10, "hello");
使用泛型时,完全可以将泛型当成是一个普通的类去使用;
泛型类
class MyClass<T>{
prop: T;
constructor(prop: T){
this.prop = prop;
}
}
泛型继承
也可以对泛型的范围进行约束
interface MyInter{
length: number;
}
function test<T extends MyInter>(arg: T): number{
return arg.length;
}
使用T extends MyInter表示泛型T必须是MyInter的子类,不一定非要使用接口类和抽象类同样适用;