泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。
<T>
泛型基本应用
function Hello<T>(arg:T):T{
return arg;
}
var output = Hello<string>("hello ime");
console.log(output);
泛型的应用
function Hi<K>(num:K):K{
console.log(num.length);
return num;
}
T[] =>表示泛型是一个数组
function Hi<T>(str:T[]):T[]{
console.log(str.length);
return str;
}
var lists:Array<string> = Hi<string>(["1","2","3","4"]);
for(var i=0;i<lists.length;i++){
console.log(lists[i]);
}
泛型类型
function Hx<T>(arg:T):T{
return arg;
}
var myHello:<K>(arg:K) => K = Hx;
console.log('myHello',myHello("hello"));
var myFunc:(a:number)=>string = function(a:number):string{
return "Hello"+a;
}
console.log(myFunc(2));
接口中使用泛型
interface HiTest{
<T>(arg:T):T;
}
function myTest<T>(arg:T):T{
return arg;
}
var MH:HiTest = myTest;
console.log(MH('9999999999'));
interface XX<T>{
(arg:T):T;
}
function myXx<T>(arg:T):T{
return arg;
}
var mh:XX<number> = myXx;
console.log(mh(199));
泛型类
class HelloNumber<T>{
Ten:T;
add:(x:T,y:T) => T;
}
var myHelloNumber = new HelloNumber<number>();
myHelloNumber.Ten = 10;
myHelloNumber.add = function(x,y){
return x+y;
}
console.log(myHelloNumber.Ten);
console.log(myHelloNumber.add(10,10));