我需要迭代一个大型对象,它只是输入" object"。 它包含未知数量的相同类型的对象。
在较旧的帖子中,我在自定义的Symbol.iterator函数中找到了使用生成器的解决方案,以使用for..of循环使大对象可迭代。
但在我看来,现在在2017年,只使用Object.keys实际上更容易:
Object.keys(bigObject).forEach((key:string)=>{
console.log(bigObject[key]);
});
这实际上运行得很好!但TypeScript编译器不断给我错误"错误TS7017:元素隐含地h 作为一个'任何'输入因为类型' {}'没有索引签名"
有人知道我在这里缺少什么吗?或者,使用ES2015和TypeScript(2.2.2)进行此类迭代的当前最佳实践是什么?
答案 0 :(得分:4)
它包含未知数量的相同类型的对象。
您的generic可能会使用dictionary界面BigObject<T>
吗?
interface BigObject<T> {
[index: string]: T
}
let bigObject: BigObject<object> = {}
Object.keys(bigObject).forEach(key => {
console.log(bigObject[key])
})
我在object
写了let bigObject: BigObject<object>
类型。你可以使用更好的类型。