《TypeScript全面指南》第五章:TypeScript 的数组类型

344 阅读1分钟

简介

在 TypeScript 中,数组类型可以使用多种方式来定义。最常见的两种方式是 "类型 + 方括号" 和使用泛型

类型 + 方括号

let list: number[] = [1, 2, 3];

使用泛型

let list: Array<number> = [1, 2, 3];

数组的类型推断

当你初始化数组或者给数组赋值的时候,TypeScript 会根据你赋予的元素来推断数组的类型。

例如:

let list = [1, 2, 3];  // list: number[]

但是,如果数组中的元素有多种类型,那么 TypeScript 会推断出一个联合类型:

let mixedList = [1, 'two', true];  // mixedList: (number|string|boolean)[]

只读数组,const 断言

在 TypeScript 中,你可以使用 readonly 关键字来定义一个只读的数组,这意味着你不能修改数组的内容或结构

let readonlyList: readonly number[] = [1, 2, 3];
// readonlyList[0] = 4;  // Error! Cannot assign to '0' because it is a read-only property.

你也可以使用 const 断言,这是一种特殊的方式来确保 TypeScript 在推断类型时将它当做一个常量。

let list = [10, 20] as const;

此时,list 被推断为一个只读元组,类型为 readonly [10, 20]

多维数组

在 TypeScript 中,可以有多维数组,例如二维数组、三维数组等。定义方法和单维数组类似,只是类型标注中增加了额外的方括号。

  • 二维数组
let matrix: number[][] = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];
  • 三维数组
let threeDMatrix: number[][][] = [
  [
    [1, 2],
    [3, 4]
  ],
  [
    [5, 6],
    [7, 8]
  ]
];

定义多维数组时,可以将内部数组的类型推断与之前讨论的组合,包括只读数组联合类型