泛型(Generics)是 TypeScript 中一个非常强大的特性,它允许你在编写代码时定义类型参数,并在使用时指定具体的类型。这使得你的代码更加灵活和可复用,同时也能够保持类型的安全性。
泛型的基本概念
在 TypeScript 中,泛型通常用于函数、类、接口和类型别名中。泛型允许你在定义函数或类等构造时使用类型占位符,这些占位符在实际使用时会被具体的类型替换。
应用场景
1. 泛型函数
泛型函数允许你在函数签名中定义类型参数,并在函数体中使用这些类型参数。这样可以确保函数在处理不同类型的数据时保持类型安全。
示例:交换两个值的位置
function swap<T, U>(first: T, second: U): [U, T] {
return [second, first];
}
const result = swap<number, string>(10, 'hello');
console.log(result); // 输出 ['hello', 10]
在这个例子中,swap
函数接受两个类型参数 T
和 U
,分别代表两个值的类型。函数返回一个元组,其中元素的顺序互换了。
2. 泛型类
泛型类允许你在类定义时定义类型参数,并在类的成员中使用这些类型参数。这样可以创建更加通用的类,适用于多种类型的数据。
示例:创建一个通用的容器类
class Container<T> {
private items: T[] = [];
addItem(item: T): void {
this.items.push(item);
}
getItems()