泛型的主要作用,在定义函数或者类时,遇到类型不明确,就可以使用泛型
举个例子,定义一个泛型函数,K是随意取的
function fn<K>(a:K) :K{
return a;
}
可以直接调用具有泛型的函数
fn(10);
不指定泛型,TS自动对类型进行推断,意味着K的类型为number,参数a的类型为number,返回值的类型也为number
fn<string>('hello')
指定泛型为string
多个泛型的时候
function fn2<T,K>(a:T,b:K):T{
console.log(b);
return a;
}
//最好写上<number,string>
fn2<number,string>(123,'hello')
如果限制一下泛型的范围
interface Inter{
length:number
}
//T extends Inter表示泛型T必须是Inter实现类(子类)
function fn3<T extends Inter>(a:T):number{
return a.length
}
调用
fn3('123') //字符串有length长度
fn3({
}) //报错