泛型的定义
// 需求一: 泛型 可以支持不特定的数据类型, 要求,传入的参数和返回参数一致
// 这种方式虽然能实现传入和返回的参数一致,但是失去类型参数检验
/*
function getData(value: any): any {
return "success"
}
*/
// 定义泛型解决需求一
// T表示泛型(这里的大写字母可以随便定义,但一般默认为T) 具体什么类型是调用这个方法的时候决定的
function getData<T>(value: T):T{
return value;
}
// 传入的字符串类型
var get = getData<string>("hello")
console.log(get)
// 传入的类型为数字
var getTwo = getData<number>(666)
console.log(getTwo)
// 需求二:比如有个最小堆算法,需要同时支持返回数字和字符串两种类型,通过类的泛型来实现
// 定义类的泛型
class minCla<T> {
list: T[] = [];
add(value: T):void {
this.list.push(value);
}
min(): T {
var minNum = this.list[0];
for(var i=0; i<this.list.length; i++) {
if (minNum > this.list[i]) {
minNum = this.list[i]
}
}
return minNum
}
}
var minNum = new minCla<number>