如何在TypeScript中迭代通用对象的键?

时间:2017-04-13 10:10:11

标签: typescript ecmascript-6

我需要迭代一个大型对象,它只是输入" 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)进行此类迭代的当前最佳实践是什么?

1 个答案:

答案 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>类型。你可以使用更好的类型。