泛型
指 在定义 函数、接口 或 类的时候 不预先指定类型 而在使用的时候再指定类型 的一种特性
简单例子
首先,我们来实现一个函数 createArray,它可以创建一个指定长度的数组,同时将每一项都填充一个默认值:
function createArray(length: number, value: any): Array<any> {
let result = [];
for (let i = 0; i < length; i++) {
result[i] = value;
}
return result;
}
createArray(3, 'x'); // ['x', 'x', 'x']
这段代码编译不会报错,但是一个显而易见的缺陷是,它并没有准确的定义返回值的类型:
Array 允许数组的每一项都为任意类型。但是我们预期的是,数组中每一项都应该是输入的 value 的类型。
这时候泛型就派上用场了
使用泛型优化例子
function creatArray<T>(length: number, value: T): Array<T> {
let result: Array<T> = []
for (let i = 0; i < length; i++) {
result.push(value)
}
return result
}
console.log(creatArray(1, 'x'))
在函数名字后面添加一个 T ,来帮助我们捕获用户传入的类型。之后我们就可以使用这个类型。