/**
* 泛型:軟件工程中,我們不僅要創造定義良好的API,同時也要考慮可重用行,組件不僅能
* 夠支持當前的數據類型,同時也能夠支持未來數據類型。
* 通俗理解:泛型就是解決類、接口、方法的復用性以及對不特定類型的數據的支持
*
*/
function getDate<T>(value:T):T {
return value;
}
getDate<number>(123);
getDate<string>('123');
// 類的泛型
class minclass<T> {
list:T[] = [];
add(value:T):void {
this.list.push(value);
}
min():T {
return this.list[0];
}
}
var minMy = new minclass<number>();
//函數類泛型接口
interface ConFn {
<T>(value1:T,value2:T):T
}
var myFn:ConFn = function<T>(value:T):T {
return value;
}
// 類作為參數來約束傳入數據的合法性
class Artic {
title: string | undefined;
desc: string|undefined;
status:number | undefined;
constructor(params:{
title: string | undefined,
desc: string|undefined,
status?:number | undefined,
}){
}
}
class MySQLdb<T>{
add(info:T):boolean{
return true;
}
}
var a = new Artic({
desc: '123',
status: 123,
title: '123'
});
var b = new MySQLdb<Artic>();
b.add(a);
