- Published on
TypeScript - 数组
- Authors
- Name
- Deng Hua
目录
Array Types
Arrays can be typed using a type annotation followed by empty array brackets, like number[] for an array of numbers.
TypeScript 为数组提供了专用的类型语法,因此你可以很轻易的注解数组。它使用后缀 []
难道是这样吗?
const arr: [] = [];
如果声明数组时数组不为空,将会看到TS的报错:
const arr: [] = [1]; // ❌ 不能将类型“[number]”分配给类型“[]”
这是因为,声明数组类型,需要一个指定类型
比如一个元素为字符串构成的数组
const strArr: string[] = ['string'];
如果只有一个[]
,则TS会认为这是一个空数组,并将永远是一个空数组。
数组的默认类型
默认情况下,数组的默认类型为any
const arr = [];
arr.push(1);
但当同时设置了noImplicitAny: false
与strictNullChecks: true
时,默认的类型将为never
const users = []; // 等价于 const arr: never[] = [];
users.push('john');// ❌ 类型“string”的参数不能赋给类型“never”的参数。
Alternate Syntax
另一种数组类型注释的写法:
const bools: Array<boolean> = []
自定义类型数组
type Point = {
x: number;
y: number;
};
const coords: Point[] = [];
多维数组
const board: string[][] = [
["X", "O", "X"],
["X", "O", "X"],
["X", "O", "X"],
];