typescript中的泛型
泛型:软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。
在像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。 这样用户就可以以自己的数据类型来使用组件。
通俗理解:泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验)
泛型函数
// 泛型拯救了 any 泛型可以支持不特定的数据类型
// T 代表泛型
function getDatas<T>(value:T):T{
return value;
}
console.log(getDatas<number>(123));
console.log(getDatas<string>("小牛"));
泛型类
// 泛型类
class MinClass<T>{
public list:T[] = [];
add(value:T){
this.list.push(value);
}
min():T{
var minNum = this.list[0];
for(let i=0;i<this.list.length;i++){
if(minNum>this.list[i]){
minNum = this.list[i];
}
}
return minNum;
}
}
// 实例化传入的 number类型决定了 他真正的类型
var m1 = new MinClass<number>();
m1.add(1);
m1.add(2);
m1.add(3);
m1.add(4);
console.log(m1.min())
泛型接口
// 泛型接口
// 函数型接口泛型
interface ConfigFn{
<T>(value:T):T;
}
var getFn:ConfigFn = function<T>(value:T):T{
return value;
}
getFn<number>(1);
// 泛型接口
interface getData2<T>{
(value:T):T;
}
var getData2 = function<T>(value:T):T{
return value;
}
getData2<string>("小牛");