写法:
function getDate<T>(value:T):T{
return value;
}
getDate<number>(123)
getDate<string>('111')
function getDate<T>(value:T):any{
return "adsads";
}
getDate<number>(123)
getDate<string>('111')
泛型类:
class MinClass<T>{
public list:T[]=[];
add(num:T):void{
this.list.push(num)
}
min():T{
let minNum = this.list[0];
for(let i =0;i<this.list.length;i++){
if(minNum>this.list[i]){
minNum = this.list[i];
}
}
return minNum;
}
let m = new MinClass()
把类当做参数的泛型类
class User{
username:string | undefined;
password:sstring | undefined
}
class MysqlDb<T>{
add(info:T):boolwan{
return true;
}
}
let u = new User();
u.username = 'asd'
u.password='asd123'
let Db = new MysqlDb<User>()
Db.add(u)
泛型接口:
interface Config{
<T>(value:T,value2:T):T;
}
let setData:Config = function<T>(value:T,value2:T):T{
return value + value2
}
setData<string>('asd')
interface Config<T>{
(value:T,value2:T):T;
}
function getData<T>(value:T,value2:T):T{
return value + value2
}
let getdata :config<string> = getData;