类型不明确,但是要求其中一部分或者全部类型是一致的情况
使用场景
在不知道变量类型
的情况下定义: 如果要求 first 输入的类型,second 必须一样 这时候下面这个代码就不能做到了
可以用泛型解决这个的问题
function test(first:any,second:any){
return `${ first}+${ second}`
}
泛型解决:T 为自定义的,取 ABC 都可以
function test<T>(first:<T>,second:<T>){
return `${ first}+${ second}`
}
test<number>(1,1)
test<number>(1,'1')//报错
可以定义一个数组里面的类型
function map<T>(params:T[]){
return params
}
另一个写法
function map<T>(params:Array<T>){
return params
}
map<string>([1,'1'])//报错
map<string>(['1','1'])
定义多个泛型:
function test<T,P>(first:T,second:P):T{
return first //要求返回值和first 的类型一致
}
test<string,number>('1',1)
test('1',1) //不定义类型也可以,ts会自动推断出该T是string类型和P是number类型