TS泛型是一种类型变量,它可用于定义不特定的数据类型,从而实现代码复用,能够更灵活地处理同类型的数据。在函数和类中可以使用泛型,以下是使用 TS 泛型实现代码复用的示例:
使用泛型定义函数,从泛型参数中获取类型,处理后返回这个类型数据:
function reverse<T>(data: T[]): T[] {
return data.reverse();
}
let strings = ['', 'World', 'TypeScript'];
let reversedStrings = reverse(strings);
console.log(reversedStrings); // ["TypeScript", "World", "Hello"]
let numbers = [1, 2, 3, 4, 5];
let reversedNumbers = reverse(numbers);
console.logversedNumbers); // [5, 4, 3, 2, 1]
在上面的示例中,我们定义了一个名为reverse
的函数,该函数接受一个 T
类型的参数(它是一个基于数组的泛型参数),并返回一个 T
类型的数组。 在此示例中,我们使用了 reverse
数组方法对传入的参数进行翻转,从而实现了一个通用的翻转函数。
除此之外,还可以定义一个泛型类,例如定义一个泛型栈:
class Stack<T> {
private items: T[] = [];
push(item: T) {
this.items.push(item);
}
pop(): T | undefined {
return this.items.pop();
}
}
const = new Stack<number>();
stack.push(1);
stack.push(2);
stack.push(3);
console.log(stack.pop()); // 3
console.log(stack.pop()); // 2
console.log(stack.pop()); // 1
在泛型类中,我们定义了一个 items
数组,该数组的元素类型被指定为 T
类型,然后我们定义了两个方法:push()
和 pop()
,用于向栈中添加和删除元素。在构造时,我们将 T
类型指定为 number
类型,从而创建了一个泛型栈对象。我们可以使用 push()
方法添加 number
类型的元素,使用 pop()
方法获取 number
类型的元素。
总结:使用 TS 泛型,能够更灵活地处理不同类型的数据,从而实现代码的复用。可以使用泛型定义函数、类和接口等,以便于处理不同类型的数据。通过使用泛型,能够减少冗余代码,提高代码的可重复使用性。