gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 20:37:30 24 4
gpt4 key购买 nike

我需要迭代一个大对象,它只是被输入为“object”。它包含未知数量的相同类型的对象。

在较早的帖子中,我找到了在自定义 Symbol.iterator 函数中使用生成器来使大型对象可通过 for..of 循环迭代的解决方案。

但在我看来,现在是 2017 年,使用 Object.keys 实际上更容易:

Object.keys(bigObject).forEach((key:string)=>{
console.log(bigObject[key]);
});

这实际上运行得很好!但是 TypeScript 编译器一直给我错误 "error TS7017: Element implicitly h作为“任何”类型,因为类型“{}”没有索引签名”

有人知道我在这里缺少什么吗?或者,使用 ES2015 和 TypeScript (2.2.2) 进行此类迭代的当前最佳实践是什么?

最佳答案

对于...在

在查看 Typescript 文档 ( Typescript: Iterators and Generators ) 时,我们看到 for..in 语法将遍历对象的 keys

for..in returns a list of keys on the object being iterated, whereas for..of returns a list of values of the numeric properties of the object being iterated.

我们可以利用它来索引我们的对象并获得强类型值:

// Go through each key of the indexed object:
for (const key in indexedObject)
{
// Get the indexed item by the key:
const indexedItem = indexedObject[key];
// Now we have the item.

// Use it...
}

解决方案

我们可以用它来得到一个优雅的问题解决方案:

// Go through each key in the bigObject:
for (const key in bigObject)
{
// Get the strongly typed value with this name:
const value = bigObject[key];
// Now we have the the strongly typed value for this key (depending on how bigObject was typed in the first place).

// Do something interesting with the property of bigObject...
}

关于typescript - 如何迭代 TypeScript 中通用对象的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43389414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com