1、数组类型
1.1、数组的表示方法1:[类型+ 方括号]来表示数组;但不允许出现不同类型
//编译成功
let fibonacci: number[]=[1,2,3]
//但不允许有不同的类型(下面的number数组中就包含了字符串‘3’)
let fibonacci: number[]= [1,2,'3',4]
// 编译错误: Type 'string' is not assignable to type 'number'.(string类型不可分配number
类型)
1.2、数组的表示方法2:使用数组泛型Array<elemType>来表示数组
let fibonacci: Array<number>: =[1,2,3]
1.3、也可以用接口描述数组
interface NumberArray{
[index: number]: number
}
let arr: NumberArray= [1,3,5]
2、类数组:类数组不是数组类型,比如 arguments
:
function sum(){
let args:number[] = arguments;
}
// 编译错误:arguments 实际上是一个类数组,不能用普通的数组的方式来描述,而应
该用接口
function (){
let args: {
[index: number]: number;
length: number;
callee: function
} = arguments
}
在上例中,除了约当索引的类型是数字时,值的类型也必须是数字之外,还约束了length 和 callee
两个属性。
// 事实上常用的类数组都有自己的接口定义,如 IArguments , NodeList , HTMLCollection等:
function sum() {
let args: IArguments = arguments;
}
其中 IArguments 是 TS 中定义好了的类型,它实际上就是:
interface IArguments {
[index: number]: any;
length: number;
callee: Function;
}