TypeScript 基础学习之泛型和 extends 关键字
// 泛型函数,用于交换数组中任意两个元素的位置
function swap<T>(arr: T[], indexA: number, indexB: number): T[] {
const temp = arr[indexA];
arr[indexA] = arr[indexB];
arr[indexB] = temp;
return arr;
}
// 使用泛型约束,确保传入的对象具有 'length' 属性
function getFirstElement<T extends any[]>(obj: T): T[0] {
return obj[0];
}
// 测试泛型函数和泛型约束函数
const myArray = [1, 2, 3];
swap(myArray, 0, 2); // 应该返回 [3, 2, 1]
console.log(getFirstElement(myArray)); // 应该输出 3
console.log(getFirstElement({ a: 1, b: 2 })); // 应该输出 undefined,因为对象不是数组
这段代码定义了两个泛型函数,分别用于交换数组中元素的位置和获取对象的第一个元素。泛型 T
在第一个函数中代表任意类型,在第二个函数中通过 extends
关键字和数组类型约束,确保传入的对象是数组类型,并且提取了数组的第一个元素类型作为返回值类型。代码示例简洁,易于理解,并且提供了清晰的注释。
评论已关闭