数组类型
定义数组的方式:
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
}