在指定函数或者类的时候,如果遇到类型不明确的话,就可以使用泛型(不先指定类型,使用的时候进行类型的转换)
- 一般在声明的变量后面加一个尖括号来声明泛型
定义函数
指定一个泛型
- 当我们进行类型转换后,编辑器就会有相应的提示
- 当然我们也可以不指定泛型,ts会进行自动的类型转换
fn(10)
指定多个泛型
function fn1<T,K>(a:T,b:K):K{
console.log(a);
return b
}
fn1<number,string>(1,'hello')
定义类
class Person3<T>{
name:T
constructor(name:T){
this.name = name
}
}
const person4 = new Person3<string>("Jack")
console.log(person.name);
泛型与接口
泛型也可以继承接口,使用
extends
关键字,他表示泛型必须满足接口的条件
interface IPerson1{
name:string,
age:number
}
function fn2<T extends NameInterface>(a:T):string{
return a.name
}
fn2<IPerson1>({name:"小敏",age:10})