探索 TypeScript 泛型的强大功能:约束、实用类型、文字类型和递归结构

绝地灬酷狼 2024-03-17 22:30 35阅读 0赞

TypeScript 泛型

TypeScript 中的泛型允许您创建可与不同类型一起使用的可重用组件或函数。它们提供了一种参数化类型的方法,从而能够创建灵活且类型安全的代码。这是对泛型的解释和示例:

通用函数:

您可以通过在尖括号 ( ) 内指定类型参数来定义泛型函数<>。然后,在调用函数时,可以将该类型参数用作特定类型的占位符。这是一个例子:

  1. function identity<T>(arg: T): T {
  2. return arg;
  3. }
  4. let result = identity<string>("Hello");
  5. console.log(result); // Output: "Hello"
  6. let numberResult = identity<number>(42);
  7. console.log(numberResult); // Output: 42

在identity上面的函数中,类型参数T表示泛型类型。调用函数时,将推断提供的参数的类型,或者您可以在尖括号内显式指定类型。

通用接口:

您还可以将泛型与接口结合使用来创建适用于各种类型的可重用接口。这是一个例子:

  1. interface Container<T> {
  2. value: T;
  3. }
  4. let container1: Container<number> = {
  5. value: 42 };
  6. console.log(container1.value); // Output: 42
  7. let container2: Container<string> = {
  8. value: "Hello" };
  9. console.log(container2.value); // Output: "Hello"

在Container接口中,类型参数T用于定义value属性。实现接口时,可以指定 的实际类型T。

通用类:

泛型还可以应用于类,允许您创建对不同类型进行操作的类。这是一个例子:

  1. class Queue<T> {
  2. private items: T[] = [];
  3. enqueue(item: T) {
  4. this.items.push(item);
  5. }
  6. dequeue(): T | undefined {
  7. return this.items.shift();
  8. }
  9. }
  10. const numberQueue = new Queue<number>();
  11. numberQueue.enqueue(1);
  12. numberQueue.enqueue(2);
  13. console.log(numberQueue.dequeue()); // Output: 1
  14. const stringQueue = new Queue<string>();
  15. stringQueue

发表评论

表情:
评论列表 (有 0 条评论,35人围观)

还没有评论,来说两句吧...

相关阅读

    相关 类型参数及约束

    [泛型类型参数及约束][Link 1] 泛型类型参数简介     在定义泛型类型和泛型方法时,常用到泛型类型参数,泛型类型参数是在实例化泛型时指定类型的占位符。泛型类