在TypeScript中,数组类型有多种定义方法,比较灵活。
类型+方括号
let array: number[] = [1, 2, 3, 4, 5, 6]
数组的项中不允许出现其他的类型:
let arry: number[] = [1, '2', 3, 4, 5, 6] // 不允许出现string类型
数组的一些方法参数也会根据数组定义时的约定类型进行限制:
let array: number[] = [1, 2, 3]
array.push('4') // push只允许传入number类型变量,'4'为string会报错
- 数组泛型
let array: Array<number> = [1, 2, 3]
- 用接口表示数组
interface Array {
[index: number]: number //只要索引的类型是数字那么值的类型必须是数字
}
let array: Array = [1, 2, 3]
- 类数组
function sum() {
let args: number[] = arguments //报错,arguments属于类数而不是普通数组
}
function sun() {
let arg: { //使用接口定义类数组
[index: number]: number; //number类型的签名不会影响string类型的签名,所以function不是number子集也不会报错
length: number;
callee: Function
} = arguments
}
事实上常用的类数组都有自己的接口定义
function sum() {
let args: IArguments = arguments
}
- any在数组中的应用
any表示数组中可以出现任意类型
let arry: any[] = [1, '2', {}, true]