使用泛型可以来创建可重用的组件,一个组件可以支持多种类型的数据。泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验)
泛型:可以支持任意的数据类型
// T表示泛型,具体什么类型是调用这个方法的时候决定的,可以用任意字母表示,但是3个地方要一致
//getData<T>表示泛型方法。
//(value:T):T 参数是任意类型,返回值是任意类型
function getData<T>(value:T):T{//传入什么类型,返回什么类型
return value;
}
getData<string>('1214231')
function getData<T>(value:T):any{//返回任意类型
return '2145214214';
}
getData<number>(123); //参数必须是number
getData<string>('这是一个泛型');
泛型类
//类的泛型
class Addnum<T>{
public list:T[]=[];
add(value:T):void{
this.list.push(value);
}
}
var m1=new Addnum<number>(); /*实例化类 并且指定了类的T代表的类型是number*/
m1.add(11);
泛型接口
//函数类型接口
interface ConfigFn{
(value1:string,value2:string):string;
}
var setData:ConfigFn=function(value1:string,value2:string):string{
return value1+value2;
}
//泛型函数类型接口
interface ConfigFn{
<T>(value:T):T;
}
var getData:ConfigFn=function<T>(value:T):T{
return value;
}
//泛型接口
interface ConfigFn<T>{
(value:T):T;
}
var myGetData:ConfigFn<string>= function getData<T>(value:T):T{
return value;
}