泛型的概念
泛型:任意类型
// 泛型好处:既有类型检查,又可以传入任意类型
function getMsg<T>(msg: T) {
console.log(msg);
}
getMsg<string>('hello');
getMsg<number>(123);
// 报错
getMsg<string>(123);
/*
在定义函数或是类时,如果遇到类型不明确就可以使用泛型
*/
function fn<T>(a:T):T {
return a;
}
// 可以直接调用具有泛型的函数
// Ts会自动推断
fn(10); // 不指定泛型,Ts可以自动对类型进行判断
fn<string>('hello'); // 指定泛型
function fn2<T, K>(a: T, b: K): T{
console.log(b);
return a;
}
fn2<number, string>(123, 'zhangsan')
interface Inter{
length: number;
}
function fn3<T extends Inter>(a:T):number {
return a.length;
}
class MyClass<T>{
name: T;
constructor(name: T) {
this.name = name;
}
}
const mc = new MyClass<string>('zhangsan')