返回

揭秘TypeScript中的泛型用法,助你玩转复杂的数据类型

前端

在TypeScript中,泛型是一种非常强大的特性,它允许你创建可以适用于多种数据类型的代码。这使得你的代码更加灵活和可重用,并且可以减少你编写重复代码的需要。

泛型的基本用法是使用尖括号 <> 来声明一个类型参数,然后在代码中使用这个类型参数来指定具体的数据类型。例如,你可以创建一个函数来比较两个值的大小,而不管这两个值是什么类型。你可以使用泛型来声明这个函数,如下所示:

function compare<T>(a: T, b: T): number {
  if (a < b) {
    return -1;
  } else if (a > b) {
    return 1;
  } else {
    return 0;
  }
}

在这个函数中,<T> 是一个类型参数,它可以是任何类型。当你在调用这个函数时,你可以在尖括号 <> 中指定具体的数据类型。例如,你可以调用这个函数来比较两个数字:

const result = compare<number>(1, 2);

或者你可以调用这个函数来比较两个字符串:

const result = compare<string>("a", "b");

泛型还可以用于定义类。例如,你可以创建一个泛型类来表示一个列表,如下所示:

class List<T> {
  private items: T[] = [];

  add(item: T) {
    this.items.push(item);
  }

  get(index: number): T {
    return this.items[index];
  }

  remove(item: T) {
    const index = this.items.indexOf(item);
    if (index !== -1) {
      this.items.splice(index, 1);
    }
  }
}

在这个类中,<T> 是一个类型参数,它可以是任何类型。当你在创建这个类的实例时,你可以在尖括号 <> 中指定具体的数据类型。例如,你可以创建一个数字列表:

const numbers = new List<number>();

或者你可以创建一个字符串列表:

const strings = new List<string>();

泛型是一个非常强大的特性,它可以让你编写出更加灵活和可重用的代码。如果你还没有使用过泛型,我强烈建议你开始使用它。泛型可以让你编写出更优雅和高效的代码。