数组的类型

70 阅读1分钟

在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]