我有这个打字稿类(简化为了简化):
class Dictionary<T> {
items = [];
add(item: T) {
this.items.push(item);
}
... more code here ...
}
当我实例化变量
时var channels = new Dictionary<Channel>();
channels.add(new Channel('name1'));
channels.add(new Channel('name2'));
在代码的另一部分(我无法更改)中,对象在循环中使用:
for (var key in channels){ console.log(key);}
我得到“items”,我的对象的成员,而我想在channels对象中获取items数组的内容。
所以在这种情况下我想要的是
[0,1] items数组的键。
这可能吗?
答案 0 :(得分:1)
您可以尝试通过实现Iterator来实现此目的。这将允许您指定对象的循环如何工作。 看看here。
可能只有你以ES6为目标才有可能 但this question似乎建议您只需实现next()方法即可使其工作。
答案 1 :(得分:0)
也许这个解决方案,但有length
成员:
class Dictionary<T> extends Array<T> {
add(item: T) {
this.push(item);
}
}
class Channel {
constructor(public name: string) {
}
}
var channels = new Dictionary<Channel>();
channels.add(new Channel('name1'));
channels.add(new Channel('name2'));
console.log(Object.keys(channels)); // Array [ "0", "1", "length" ]
答案 2 :(得分:-1)
已更新:通过value
获取object
key
试试这个
for (var key in channels){
console.log(channels[key]);
}