【阮一峰】2.数组
数组
简介
所有成员的类型必须相同,但是成员数量是不确定的。
由于成员数量可以动态变化,所以 TypeScript 不会对数组边界进行检查,越界访问数组并不会报错。
第一种写法:
let arr: (number | string)[];
第二种写法:
let arr: Array<number | string>;
TypeScript 允许使用方括号读取数组成员的类型。
type Names = string[];
type Name = Names[0]; // string
或
type Names = string[];
type Name = Names[number]; // string
数组类型推断
如果变量的初始值为空数组,随着元素的加入,Typescript 会自动修改推断的数组类型。
只读数组
TypeScript 允许声明只读数组,方法是在数组类型前面加上 readonly
关键字。
const arr: readonly number[] = [0, 1];
TypeScript 将 readonly number[]
与 number[]
视为两种不一样的类型,数组是只读数组的子类型。
readonly
关键字不能与数组的泛型写法一起使用。
TypeScript 提供了两个专门的泛型,用来生成只读数组的类型。
const a1: ReadonlyArray<number> = [0, 1];
const a2: Readonly<number[]> = [0, 1];
只读数组还有一种声明方法,就是使用“const 断言
”。
const arr = [0, 1] as const;
多维数组
TypeScript 使用 T[][]
的形式,表示二维数组,T
是最底层数组成员的类型。
var multi: number[][] = [
[1, 2, 3],
[23, 24, 25],
];