TypeScript 的泛型(Generics)是一种在编写可复用、灵活且类型安全的代码时非常有用的特性。泛型允许你在编写函数、类或接口时使用参数化类型,这些参数化类型在使用时可以被具体指定。
基本概念
泛型允许你编写能够适用于各种类型的代码,而不是固定于一种特定类型。在函数、类或接口中,你可以定义一个或多个类型参数,这些类型参数将在实际使用时被替换为具体的类型。
用法示例
1. 函数泛型
function identity<T>(arg: T): T {
return arg;
}
let result = identity<string>("hello");
// result 的类型为 string,因为传入的参数是字符串类型
在这个例子中,<T>
表示这是一个类型参数,可以接受任何类型的参数。当我们调用 identity
函数时,通过 <string>
指定了类型参数 T
为 string
,因此 TypeScript 知道返回值的类型应该是 string
。
2. 接口泛型
interface Box<T> {
value: T;
}
let box: Box<number> = { value: 10 };
// box 中的 value 必须是数字类型
这个示例中,Box
接口使用了一个类型参数 T
,用来指定 value
属性的类型。通过指定 <number>
,我们告诉 TypeScript box
对象中的 value
属性应该是数字类型。
3. 类泛型
class Queue<T> {
private T[] = [];
push(item: T) {
this.data.push(item);
}
pop(): T | undefined {
return this.data.shift();
}
}
let numberQueue = new Queue<number>();
numberQueue.push(1);
numberQueue.push(2);
let firstItem = numberQueue.pop();
// firstItem 的类型为 number
在这个示例中,Queue
类使用了类型参数 T
,用来指定队列中的元素类型。当我们创建 numberQueue
实例时,指定了类型参数为 number
,所以该队列只能存储数字类型的元素。
优势
- 代码复用性:泛型使得你能够编写可重用的代码,而不必限制于特定的类型。
- 类型安全:使用泛型可以在编译时捕获类型错误,确保类型的一致性。
- 灵活性:可以将泛型应用于函数、类、接口等不同的语法结构,使得代码更加灵活和可扩展。
泛型是 TypeScript 中非常强大和灵活的特性,能够帮助你编写更加通用、可维护和类型安全的代码。
标签:TypeScript,value,numberQueue,类型,参数,Generics,泛型 From: https://www.cnblogs.com/ygyy/p/18191444