# 数组的类型

在 TypeScript 中,数组类型有多种定义方式,比较灵活。

# 「类型 + 方括号」表示法

第一种,可以在元素类型后面接上 [],表示由此类型元素组成的一个数组:

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

注意在 TypeScript 的数组中不允许出现其他的类型

let list: number[] = ["1", 2, 3];
// Type 'string' is not assignable to type 'number'.
let list: number[] = [1, 2, 3];
list.push("4");
//  Argument of type 'string' is not assignable to parameter of type 'number'.

# 数组泛型

第二种方式是使用数组泛型,Array<元素类型>

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

# 用接口表示数组

此外,接口也可以用来描述数组,比如这样

interface NumberArray {
  [index: number]: number;
}
let fibonacci: NumberArray = [1, 1, 2, 3, 5];

NumberArray 表示:只要索引的类型是数字时,那么值的类型必须是数字。

这种方式常用来表示类数组

# any

如果一个数组的成员的类型是动态的,这时就轮到 any 上场了。

用 any 表示数组中允许出现任意类型,就像一个普通的 JavaScript 数组一样:

let list: any[] = ["xcatliu", 25, { website: "http://xcatliu.com" }];