返回

TypeScript 中的泛型作用域、类型推论与多个类型参数

前端

TypeScript 中的泛型作用域、类型推论与多个类型参数 #

TypeScript 中的泛型允许我们创建可重用的组件,而无需知道其具体类型。这使得我们可以编写更灵活和可维护的代码。

泛型作用域

泛型的作用域是指泛型类型参数在代码中可用的范围。在 TypeScript 中,泛型类型参数只能在定义它们的组件内部使用。这意味着您不能在组件外部使用泛型类型参数。

类型推断

TypeScript 中的类型推断是指编译器能够根据代码中的值自动推断类型。这使得我们不必在代码中显式指定类型,从而简化了代码。

例如,下面的代码使用泛型函数 `map` 将数组中的每个元素加倍:

function map<T>(array: T[], callback: (element: T) => T): T[] {
  return array.map(callback);
}

const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = map(numbers, (number) => number * 2);

在上面的代码中,编译器能够从 `numbers` 数组和 `callback` 函数推断出 `T` 的类型。这意味着我们不必在代码中显式指定 `T` 的类型。

多个类型参数

泛型函数或类可以具有多个类型参数。例如,下面的代码使用泛型类 `Pair` 来表示两个元素的元组:

class Pair<T1, T2> {
  constructor(private first: T1, private second: T2) {}

  getFirst(): T1 {
    return this.first;
  }

  getSecond(): T2 {
    return this.second;
  }
}

const pair = new Pair("hello", 123);
const first = pair.getFirst();
const second = pair.getSecond();

在上面的代码中,`Pair` 类具有两个类型参数 `T1` 和 `T2`。这意味着我们可以使用 `Pair` 类来表示具有不同类型元素的元组。例如,我们可以使用 `Pair` 类来表示一个字符串和一个数字的元组,或者一个数组和一个对象的元组。

总结

泛型是 TypeScript 中一项强大的功能,它允许我们创建可重用的组件,而无需知道其具体类型。这使得我们可以编写更灵活和可维护的代码。

泛型的作用域是指泛型类型参数在代码中可用的范围。在 TypeScript 中,泛型类型参数只能在定义它们的组件内部使用。

TypeScript 中的类型推断是指编译器能够根据代码中的值自动推断类型。这使得我们不必在代码中显式指定类型,从而简化了代码。

泛型函数或类可以具有多个类型参数。这使得我们可以使用泛型组件来表示具有不同类型元素的元组或其他数据结构。