TypeScript泛型深入讲解
// 定义一个泛型函数,用于交换数组中的两个元素
function swap<T>(arr: T[], indexA: number, indexB: number): void {
const temp = arr[indexA];
arr[indexA] = arr[indexB];
arr[indexB] = temp;
}
// 使用泛型函数
const myArray = [1, 'b', true];
swap(myArray, 0, 2);
console.log(myArray); // 输出: [true, 'b', 1]
// 定义一个泛型接口,表示具有.length属性的对象
interface Lengthwise {
length: number;
}
// 泛型函数,计算对象的长度
function getLength<T extends Lengthwise>(obj: T): number {
return obj.length;
}
// 使用泛型接口
console.log(getLength('hello')); // 输出: 5
console.log(getLength([1, 2, 3])); // 输出: 3
// 泛型约束,确保传入的对象具有.substring方法
function getSubstring<T extends { substring(start: number, end: number): string }>(obj: T, start: number, end: number): string {
return obj.substring(start, end);
}
// 使用泛型约束
console.log(getSubstring('hello world', 0, 5)); // 输出: 'hello'
这段代码首先定义了一个泛型函数swap
,用于交换数组中的两个元素。接着定义了一个泛型接口Lengthwise
,并定义了一个泛型函数getLength
,用于获取对象的长度。最后,定义了一个泛型约束的函数getSubstring
,用于获取字符串的一个子串。这些示例展示了TypeScript泛型的基本使用方法。
评论已关闭