当我们定义一个变量不确定类型的时候有两种解决方式:
-
使用any
使用any
定义时存在的问题:虽然知道传入值的类型但是无法获取函数返回值的类型;另外也失去了ts类型保护的优势 -
使用泛型
泛型指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定具体类型的一种特性。
泛型函数
定义一个函数,传入两个参数,第一个参数是任何类型的数据,第二个参数是数量
函数的作用是根据数量产生对应个数的数据,存放在一个数组中
// <>里面传入类型
function getArr<T>(val: T, count: number): Array<T> {
const arr: Array<T> = []; // 也可以这样定义 const arr: T[] = [];
for(let i = 0; i < count; i++) {
arr.push(val)
}
return arr
}
console.log(getArr<string>('温情key', 5)); // [ '温情key', '温情key', '温情key', '温情key', '温情key' ]
// 也可以省略调用时的类型,TS会帮我推断出这个参数的类型
console.log