返回

TypeScript 类型梳理:初学者也能搞定类型系统

前端

TypeScript 类型系统:基础类型、联合类型、交叉类型等

TypeScript 是一款流行的 JavaScript 增强型语言,其类型系统对于代码质量和可靠性至关重要。本文将深入探讨 TypeScript 类型系统的核心组成部分,包括基础类型、联合类型、交叉类型、元组和枚举,帮助您掌握 TypeScript 的强大类型系统。

基础类型

TypeScript 的基础类型与 JavaScript 的基础类型基本相同,包括数字(number)、字符串(string)、布尔值(boolean)、null 和 undefined。这些类型用于定义变量和函数参数的类型,并在比较和操作中使用。

联合类型

联合类型允许一个变量或函数同时接受多种类型的值。使用管道(|)符号定义联合类型。例如,可以创建一个可以存储数字或字符串的变量:

let age: number | string;

age 变量可以存储数字或字符串值。联合类型在需要在不同情况下处理不同类型时很有用。

交叉类型

交叉类型允许一个变量或函数同时接受多种类型的值,但要求这些值满足所有类型的要求。使用与符号(&)定义交叉类型。例如,可以创建一个可以存储姓名(字符串)和年龄(数字)的变量:

type Person = {
  name: string;
  age: number;
};

Person 类型需要一个变量同时满足字符串和数字类型,可以通过以下方式定义变量:

let person: Person = {
  name: 'John',
  age: 30
};

元组

元组允许定义一个固定长度和类型的元素集合。使用方括号([])定义元组。例如,可以创建一个存储姓名和年龄的元组:

let person: [string, number] = ['John', 30];

person 元组包含两个元素,第一个元素为字符串,第二个元素为数字。

枚举

枚举允许定义一组具有相同类型的常量。使用枚举定义枚举。例如,可以创建一个存储颜色的枚举:

enum Color {
  Red,
  Green,
  Blue
}

Color 枚举定义了三个常量:Red、Green 和 Blue。可以使用这些常量定义变量和函数参数类型。

高级类型

除了基础类型外,TypeScript 还提供更高级的类型,如类、接口和泛型。这些类型可以帮助您构建可扩展且可维护的代码。

示例代码

以下是展示 TypeScript 类型系统如何工作的示例代码:

function add(a: number, b: number): number {
  return a + b;
}

let result: number = add(10, 20);

在这个示例中,add 函数被定义为接受两个数字并返回一个数字。result 变量被定义为一个数字,并存储了 add 函数的返回值。

常见问题解答

  • TypeScript 类型系统的目的是什么?
    TypeScript 的类型系统通过确保代码遵循预期的类型,从而帮助捕捉错误并提高代码质量和可靠性。

  • TypeScript 中有哪些基本类型?
    TypeScript 中的基本类型包括数字、字符串、布尔值、null 和 undefined。

  • 联合类型如何使用?
    联合类型使用管道符号定义,允许变量或函数接受多种类型的值。

  • 交叉类型与联合类型有何不同?
    交叉类型要求变量或函数接受多种类型的值,但这些值必须同时满足所有类型的要求。

  • 元组的用途是什么?
    元组用于定义固定长度和类型的元素集合。