泛型:组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。
泛型:对未来某个不确定的数据类型实现预定义的一种方式,,提高数据灵活性,满足不同的场景需求。
- 泛型
- 泛型函数
- 泛型类
- 泛型接口
function getData(value: string): string {
return value; // 只能返回string类型不灵活
}
// 需求:返回值的类型与传入参数的类型是相同的
// 使用any可以实现,但是抛弃了类型检查,丢失类型检查代码不严谨
泛型函数
function getData<T>(value: T): T{
return value;
}
getData<string>('data')
泛型类
class MinClass<T> {
public list: T[] = [];
add(value: T): void {
this.list.push(value)
}
getMinNum(): T {}
}
let m = new MinClass<number>(); // 传入number类型
let m1 = new MinClass<string>(); // 传入string类型
// 这样我们就很灵活的实现了传入什么类型输出什么类型,适配多种情况
泛型接口
// 函数类型接口
interface Config {
(val:string, val1: string): string;
}
function getData: Config(val: string, val1: string): string {
return val + val1
}
setData('name', 'zhangsan')
//将函数接口改造成泛型接口
interface Config<T> {
(val: T): T;
}
function getData<T>(value: T): T {
return val;
}
let myData: Config<string> = getData;
myData('hello')