Published on

TypeScript - 数组

Authors
  • avatar
    Name
    Deng Hua
    Twitter

目录

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: falsestrictNullChecks: 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"],
];