数组的类型

可以使用类型+[]或泛型方式定义数组的类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 类型+中括号,这是个由数字组成的数组
let arr:number[] = [1,2,3,4,5]
// 泛型方式也可以
let arr2:Array<string> = ["1","2","3","4","5"]
// 不能添加不符合类型的数组项
// arr.push("1")

// 也可以定义对象数组
interface X {
name: string
}
let arr: X[] = [
{
name:"yajue"
},
{
name:"knn"
}
]

二维数组

如果需要定义二维数组或多维数组,使用类型+[]形式时,有几维就加几个[],而泛型形式则是套娃

1
2
3
// 二维数组
let arr:number[][] = [[1],[2],[3]]
let arr2:Array<Array<number>> = [[1],[2],[3]]

非单一类型的数组

1
2
3
4
5
// any数组
let arr:any[] = [114, "514", true]

// 用元组定义每一项类型的数组
let arr2:[number,string,boolean] = [114, "514", true]

用接口表示数组

一般用来描述类数组

1
2
3
4
5
interface NumberArray {
// 索引的类型是数字,这里约束每项也是数字
[index: number]: number;
}
let fibonacci: NumberArray = [1, 1, 2, 3, 5];

arguments数组

也可以给函数的剩余参数定义类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function a(...args: number[]) {
console.log(args)
// IArguments是TS自带 类数组的类型
let a: IArguments = arguments
}

a(1,2,3)

// IArguments的内容
interface IArguments {
callee: Function
length: number
[index: number]: any
}