function fn(a:number):number{
return a;
}
在定义函数或是类时,如果遇到类型不明确就可以使用泛型
function fn<T>(a:T):T{
return a;
}
好处
- 不用any,就避免把类型检查跳过了
- 这里也能体现出第一个参数和返回值的类型是相同的
怎么使用
可以直接调用具有泛型的函数
- 不指定泛型,TS可以自动对类型进行判断
```typescript
function fn
(a:T):T{ return a; } fn(10);
- 指定泛型
```typescript
function fn<T>(a:T):T{
return a;
}
fn(10);
fn<string>('hello');
泛型可以指定多个
function fn2<T,K>(a:T,b:K):T{
console.log(b);
return a;
}
fn2(123,'hello');
fn2<number,string>(123,'hello');
限制泛型的范围
T extends Inter
表示泛型T必须使Inter实现类(子类)
interface Inter{
length:number;
}
// 泛型是inter的子类
function fn3<T extends Inter>(a:T):number{
return a.length;
}
fn3({length:10});
class MyClass<T>{
name:T;
constructor(name:T){
this.name = name;
}
}
const mc = new MyClass<string> ('name1');