// 泛型: 就是解决类,接口,方法的复用性,以及对非特定数据类型的支持
// T 表示泛型,具体什么类型是调用这个方法的时候决定的
function getMsgs<T>(value:T): T {
return value;
}
getMsgs("主题")
// 泛型类:比如有个最小推算法,需要同时支持返回数字和字符串类型,通过类的泛型来实现
class MinClass<T> {
public list: T[] = [];
add(num: T) {
this.list.push(num);
}
min(): T {
var minVal = this.list[0];
for (var i = 0, leng = this.list.length; i < leng; i++) {
if (minVal > this.list[i]) {
minVal = this.list[i];
}
}
return minVal;
}
}
var m = new MinClass<number>();
m.add(36);
m.add(6);
m.add(8);
m.add(3);
console.log(m.min())
var m2 = new MinClass<string>();
m2.add("f");
m2.add("b");
m2.add("c");
m2.add("s");
console.log(m2.min())
泛型接口:
// 第一种定义泛型接口的方法
interface Config {
<T>(value: T): T;
}
var getData: Config = function<T> (value: T): T {
return value;
}
console.log(getData < string > ("张飞啊"));
console.log(getData < number > (123));
// 第二种定义泛型接口的方法
interface Config2<T> {
(value: T): T;
}
function getData2<T>(value: T): T {
return value;
}
var myGetData: Config2<string> = getData2;
console.log(myGetData("张三"));