返回

TypeScript 类型体操:探究 TypeScript 内置高级类型

前端

TypeScript 是一个强大的 JavaScript 超集,它引入了类型系统,使 JavaScript 代码更加健壮可靠。TypeScript 的类型系统包括基本类型、对象类型、联合类型、交叉类型、类型别名和接口等。这些类型可以帮助我们更好地组织和维护代码,避免潜在的错误。

本文将重点介绍 TypeScript 内置的高级类型,包括联合类型、交叉类型、类型别名和接口。我们将通过代码示例来演示这些类型的使用方法,并探讨它们的优缺点。

联合类型

联合类型允许一个变量同时具有多个类型。联合类型的语法是 Type1 | Type2 | ... | TypeN。例如,我们可以定义一个变量 age,它可以是数字类型或字符串类型:

let age: number | string;

我们可以通过 if-else 语句来判断 age 的类型:

if (typeof age === "number") {
  console.log("Age is a number");
} else if (typeof age === "string") {
  console.log("Age is a string");
}

交叉类型

交叉类型允许一个变量同时具有多个类型的属性。交叉类型的语法是 Type1 & Type2 & ... & TypeN。例如,我们可以定义一个变量 person,它具有 nameage 属性,其中 name 是字符串类型,age 是数字类型:

interface Person {
  name: string;
  age: number;
}

我们可以使用交叉类型来定义更复杂的类型,例如,我们可以定义一个 Employee 类型,它具有 Person 类型的属性,还具有 salary 属性:

interface Employee extends Person {
  salary: number;
}

类型别名

类型别名允许我们为一个类型指定一个新的名称。类型别名的语法是 type AliasName = Type。例如,我们可以将 Person 类型重命名为 Human

type Human = Person;

使用类型别名可以使代码更简洁易读。

接口

接口是 TypeScript 中定义对象的类型的一种方式。接口的语法是 interface InterfaceName { property1: Type1; property2: Type2; ... }。例如,我们可以定义一个 Person 接口:

interface Person {
  name: string;
  age: number;
}

接口可以用于定义对象的形状,也可以用于函数的参数和返回值类型。

TypeScript 的高级类型提供了强大的类型系统,可以帮助我们编写更健壮可靠的代码。这些类型包括联合类型、交叉类型、类型别名和接口。通过使用这些类型,我们可以更好地组织和维护代码,避免潜在的错误。