泛型的好处
// 好处一: 不指定类型,传入什么类型就是什么类型
function echo<T>(arg: T): T {
return arg;
}
const str: string = "abc";
const result = echo(str);
// 可以传入多个值
function swap<T, U>(tuple: [T, U]): [U, T] {
return [tuple[1], tuple[0]];
}
const result2 = swap(['abc', 123]);
在泛型定义时使用变量的属性 length
在定义泛型时,由于不知道泛型到底是什么类型的,所以在定义时是无法使用变量的属性的
- 方式一:直接告诉 ts 我是数组类型的
function identityStr<T>(str: T[]): T[] {
console.log(str, str.length);
return str;
}
- 方式二:告诉 ts 我有 length 属性
interface withLength {
length: number;
}
function identityStr<T extends withLength>(str: T): T {
console.log(str, str.length);
return str;
}
网友评论