在定义函数或类时,如果遇到类型不明确时就可以使用泛型,在定义时不确定,只有在调用时才知道。
1. 在函数中使用泛型
function fn<T>(a: T): T {
return a;
}
fn(1); // 自动推断
fn<string>("yqcoder"); // 指定泛型
2. 泛型限制
使用 extends 限制泛型,如下:泛型 T 是 Inter 的子类,或者就是 Inter
interface Inter {
length: number;
}
function fn<T extends Inter>(a: T): number {
return a.length;
}
3. 在类中使用泛型
class MyClass<T> {
name: T;
constructor(name: T) {
this.name = name;
}
}
const mc = new MyClass<string>("yqcoder");