我试图定义一个如下所述的数组接口:http://www.typescriptlang.org/Handbook#interfaces-array-types,然后将项目推送到它。问题是TypeScript说推送不存在。
我在playground中尝试了以下示例:
interface StringArray {
[index: number]: string;
}
var myArray: StringArray;
myArray = ["Bob", "Fred"];
myArray.push('Barney'); // <- push doesn't exist ??
该接口不是常规数组吗?
答案 0 :(得分:3)
它可以像常规数组一样,如果你告诉编译器它是:
interface StringArray extends Array<string> {
[index: number]: string;
}
默认情况下,StringArray
只包含您定义的成员。在某些情况下,类似数组的结构不支持所有数组方法,即使它有像数组一样的索引器 - 但在您的情况下,扩展Array
接口将解决您的问题。
完整示例:
interface StringArray extends Array<string> {
[index: number]: string;
}
var myArray: StringArray;
myArray = ["Bob", "Fred"];
myArray.push('Barney'); // <- push does exist :)
答案 1 :(得分:2)
我通常不定义一个数组接口,而是定义一个接口类型为:
的数组var myArray: string[];
myArray = ["Bob", "Fred"];
myArray.push('Barney');
我更喜欢这个,因为它更容易,但说实话,我不知道功能是否有差异。