调用泛型函数
function A<Type>(value: Type): Type {
return value;
}
const a = A<number>(10);
泛型约束
function A<Type>(value: Type): Type {
console.log(value.length);
return value;
}
const a = A<number>(10);
上面value.length会报错,因为Type指定任意类型,如果传入number类型,它没有length属性,所以需要对泛型进行约束
1.指定具体的类型
function A<Type>(value: Type[]): Type[] {
console.log(value.length);
return value;
}
const a = A<number>([1, 2]);
2.添加约束:extends这里不是继承,是表示传入的类型必须要有length属性
interface Ilength {
length: number;
}
function A<Type extends Ilength>(value: Type): Type {
console.log(value.length);
return value;
}
const a = A([1, 2]);
3.使用keyof
function A<Type, key extends keyof Type>(obj: Type, key: key) {
return obj[key];
}
A({ a: 1 }, "a");