简介
在 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]
]
];
定义多维数组时,可以将内部数组的类型推断与之前讨论的组合,包括只读数组和联合类型。