泛型
泛型,字面上看就是宽泛的类型约束。是指在定义函数、接口或类的时,不指定类型,在使用时指定类型(runtime)
定义数组有两种方法:
let arr1 : number[] = ['123']
let arr2 : Array<number> = ['123']
使返回值的类型与传入参数的类型是相同,我们使用了[类型变量],它是一种特殊的变量,只用于表示类型而不是值,它不同于使用 any,它不会丢失信息.它保持了数据的准确性,使得传入数值类型和返回的数值类型相同.
泛型函数的类型与非泛型函数的类型没什么不同,只是有一个类型参数在最前面,像函数声明一样:
// 单个类型变量
function identity<T>(arg: T): T {
return arg;
}
let myIdentity: <T>(arg: T) => T = identity;
// 多个类型变量
function info<S, N>(name: S, age: N): { name:S, age:N } {
return { name, age };
}
console.log(info('pr', 18)); // {name: "pr", age: 18}