TypeScript教程(十)泛型
日期:2021-04-29
来源:程序思维浏览:1746次
泛型是指在定义函数、接口或类的时候,不预先指定具体类型,而在使用的时候在指定类型的一种特性,比如定义一个带有参数的函数,未来在调用这个函数时,传入的值类型不确定,有可能是string,也有可能是number,这时可以使用泛型来解决这样的问题。
接下来看一下代码示例:
function createArray<T>(length:number,value:T):Array<T>{
let arr=[];
for(let i=0;i<length;i++){
arr[i]=value;
}
return arr;
}
var strArray:string []=createArray<string>(3,"1");//使用这个函数
console.log(strArray); //结果:[ '1', '1', '1' ]
var numArray:number []=createArray(3,2);//如果不传<number>可以进行类型推断
console.log(numArray);//结果:[ 2, 2, 2 ]
注意上面代码加粗的地方,在声明的createArray函数后面添加<T>这样的形式是添加泛型T是自定义名称代表Type的意思,可以写成任何字符,该函数的value参数设置为T类型,Array<T>代表该函数返回值是数组类型,该数组里面值的类型为T,这个T可以想象成是一个问号,表示未来传什么样类型的值不确定。接下来使用这个函数createArray<string>(3,"1"),尖括号里面的string,会替换掉声明时createArray函数中的T,表示传入的值为string类型,这就是所谓的在使用的时候指定类型。如果在使用函数时不传入<string>或<number>,TypeScript会自动根据值的类型进行类型推断。
接下来看一下代码示例:
function createArray<T>(length:number,value:T):Array<T>{
let arr=[];
for(let i=0;i<length;i++){
arr[i]=value;
}
return arr;
}
var strArray:string []=createArray<string>(3,"1");//使用这个函数
console.log(strArray); //结果:[ '1', '1', '1' ]
var numArray:number []=createArray(3,2);//如果不传<number>可以进行类型推断
console.log(numArray);//结果:[ 2, 2, 2 ]
注意上面代码加粗的地方,在声明的createArray函数后面添加<T>这样的形式是添加泛型T是自定义名称代表Type的意思,可以写成任何字符,该函数的value参数设置为T类型,Array<T>代表该函数返回值是数组类型,该数组里面值的类型为T,这个T可以想象成是一个问号,表示未来传什么样类型的值不确定。接下来使用这个函数createArray<string>(3,"1"),尖括号里面的string,会替换掉声明时createArray函数中的T,表示传入的值为string类型,这就是所谓的在使用的时候指定类型。如果在使用函数时不传入<string>或<number>,TypeScript会自动根据值的类型进行类型推断。
精品好课