定义一个返回任意类型接收值的函数
function test(args:any): any{
return args;
}
这样的函数不能收到的信息:传入值类型与返回值类型相同
使用一个类型变量,捕获传入的数据类型,之后就可以使用这个类型
function test<T>(args:T):T{
return args;
}
定义了泛型函数后,有两种使用方法
1.传入所有的参数,包含类型参数
let output = test<string>("hello world");
2.不传入参数类型,编译器会自动确定
let output = test("hello world");
使用泛型变量
例:要返回输入变量的长度,如果是数字的话,是没有长度的,所以可以操作变量T
function test2<T> (args:Array<T>):Array<T>{
retuen args.length;
}
泛型函数的类型
let mytest2 : <T>(args:array<T>) => Array<T> = test2
泛型接口
interface myInterface{
(args:T) : T;
}
function test1<T>(args:T):T{
return args;
}
let mytest: myInterface<number> = test1;
泛型类
class Test3<T>{
zeroValue: T;
add: (x:T,y:T) => T;
}
let myTest3 = new Test3<number>();
myTest3.zeroValue = 0;
myTest3.add = function(x,y){ return x + y; };