返回

typescript 泛型与类型推导入门详解

前端

TypeScript 中的泛型和类型推导是两个非常强大的特性,它们可以让我们编写出更健壮、更灵活的代码。泛型允许我们定义类型参数化的组件,而类型推导则可以自动推断类型,从而减少代码的冗余。

泛型

泛型是一种定义类型参数化的组件的方法。我们可以使用泛型来定义函数、类和接口。在泛型定义中,我们使用类型变量来表示类型参数。类型变量可以是任何名称,但通常使用大写字母开头,例如 TUV 等。

例如,我们可以定义一个简单的泛型函数 identity,它将任何类型的参数原样返回:

function identity<T>(x: T): T {
  return x;
}

我们可以使用 identity 函数来处理任何类型的参数,例如:

const number = identity(10);
const string = identity("hello");
const boolean = identity(true);

类型推导

类型推导是一种自动推断类型的方法。TypeScript 可以根据上下文自动推断变量、函数参数和函数返回值的类型。例如,我们可以定义一个函数 sum,它将两个数字相加:

function sum(x: number, y: number): number {
  return x + y;
}

TypeScript 可以自动推断出 xy 的类型都是 number,以及 sum 函数的返回值类型是 number

泛型和类型推导的结合

泛型和类型推导可以结合使用,以编写出更健壮、更灵活的代码。例如,我们可以定义一个泛型的 Array 类,它可以存储任何类型的元素:

class Array<T> {
  private data: T[];

  constructor(...items: T[]) {
    this.data = items;
  }

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

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

我们可以使用 Array 类来存储任何类型的元素,例如:

const numbers = new Array<number>(1, 2, 3);
const strings = new Array<string>("hello", "world");
const booleans = new Array<boolean>(true, false);

结论

泛型和类型推导是 TypeScript 中两个非常强大的特性。它们可以让我们编写出更健壮、更灵活的代码。通过学习,你将掌握泛型和类型推导的本质,并能够轻松将其应用于实际开发中。