/**
* 泛型:软件工程中,我们不仅要创造定义良好的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);