【发布时间】:2017-03-11 10:21:05
【问题描述】:
当您使用接口创建自定义数组类型并为其提供字段length: number 时,TypeScript 似乎以某种方式自行计算数组的长度,但如果您将字段排除在自定义类型定义之外,它不再有效。
这里到底发生了什么?
我的代码是:
interface IPerson {
fullName: string;
age: number;
}
class Person implements IPerson {
fullName: string;
age: number;
constructor(fullName: string, age: number) {
this.fullName = fullName;
this.age = age;
}
}
interface IPersonArray {
[index: number]: IPerson;
length: number;
}
var personArray: IPersonArray = [new Person("Jane", 21),
new Person("John", 22)];
for (var i = 0; i < personArray.length; i++) {
console.log(personArray[i].fullName);
}
这是最相关的部分:
interface IPersonArray {
[index: number]: IPerson;
length: number;
}
var personArray: IPersonArray = [new Person("Jane", 21),
new Person("John", 22)];
for (var i = 0; i < personArray.length; i++) {
console.log(personArray[i].fullName);
}
我只是在界面中声明了length 字段,但是 TypeScript 神奇地找出了长度字段应该如何工作,并且我得到了预期的输出。这是怎么发生的?
【问题讨论】:
标签: arrays typescript types interface