Skip to content

数组类型

定义数组的方式:

typescript
// 数组普通类型
let arr: number[] = [1, 2, 3, 4, 5]

let arr2: Array<number> = [1, 2, 3, 4, 5]

//用interface方式定义数组,定义对象数组使用interface
interface X {
    name: string
    age?: number
}

let arr3: X[] = [{ name: 'rarrot', age: 66 }, { name: '胡萝卜' }]

// 二维数组
let arr4: number[][] = [[1, 2, 3], [1, 2]]//推荐这种

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

// 各种类型都可以
let arr6: any[] = [1, 2, 3, 'nihao', false]

let arr7: [number, number, number, string, boolean] = [1, 2, 3, 'nihao', false]

// 利用函数定义数组
function a(...args:any[]){
    console.log(args)
}

a(1,2,3)//[ 1, 2, 3 ]

// arguments
function b(...args:any[]){
    // 报错,类型“IArguments”,缺少类型“any[]”的以下属性: pop, push, concat, join 及其他 27 项。
    // let b:any[]=arguments

    let b:IArguments=arguments
    console.log(b)
}

b(1,2,3)

IArguments的原理

typescript
// 类数组arguments
function b(...args:any[]){
  // 这里b是不会报错的,因为


    let b:A=arguments
    console.log(b)
}

b(1,2,3)//[Arguments] { '0': 1, '1': 2, '2': 3 }

// IArguments的原理就是集成了arguments的三个属性,这里的A相当于IArguments
interface A{
    callee:Function
    length:number
    [index:number]:any
}

Released under the MIT License.