类数组

在阅读TypeScript时,遇到了有关类数组的知识点:

可以用接口表示数组,但是我们一般不会这么做,不过有一种情况特殊,那就是用它来表示类数组。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15

// 编译报错
function sum() {
    let args: number[] = arguments;
}

// 编译通过
function sum() {
    let args: {
        [index: number]: number;
        length: number;
        callee: Function;
    } = arguments;
}

这个例子中,我们除了约束当索引的类型是数字,值得类型必须是数字之外,也约束了它还有length和callee两个属性。

事实上常用的类数组都有自己的接口定义,如IArguments、NodeList、HTMLCollection等:

1
2
3
4
5

function sum() {
    let args: IArguments = arguments;
}

**我对类数组不了解,我对arguments也不了解。**先记录,稍后再系统学习JS。