**
Typescript的泛型
泛型:泛型就是解决类、接口、方法的复用性,以及对不特定数据类型的支持(类型校验)。实际开发中可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据,这样用户就可以用自己的数据类型来使用组件。
基本使用:
// T表示泛型,具体是说明类型是调用这个方法的时候决定的
function getData<T>(value: T): T{
return value;
}
getData<number>(123);
getData<string>('123456');
**
泛型类:
**
class MinClass<T>{
public list:T[] = [];
// 调用该方法往 list 数组中加入数字
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 m1 = new MinClass<number>(); //实例化类 并且制定了类的 T 代表的类型是 number
m1.add(5);
m1.add(100);
m1.add(2);
m1.add(10);
alert(m1.min()); //输出 2
**
泛型接口:
**
interface ConfigFn<T>{
(value: T): T;
}
function getData<T>(value: T): T{
return value;
}
var myDate: ConfigFn <string> = getData;
myDate('20')
**
类当作参数的泛型类
**
// 操作数据库的泛型类
class MysqlDb<T> {
add(info: T): boolean{
console.log(info);
return true;
}
}
// 给User表增加数据
// 1.定义一个User类和数据库进行映射
class User{
username: string | undefined;
password: string | undefined;
}
var u = new User();
u.username = '张三';
u.password = '123456';
// 将User类传入 验证数据的合法性
var Db = new MysqlDb<User>();
Db.add(u);
输出结果: