![](/img/trans.png)
[英]How do I generically iterate over the properties of an arbitrary object in TypeScript?
[英]How do I iterate over objects in typescript?
我刚开始在 vue 项目中使用打字稿,并且在尝试迭代对象时遇到错误:
Type 'Test' must have a '[Symbol.iterator]()' method that returns an iterator. ts(2488)
这是一个重现它的示例:
declare interface Test {
x: number,
y: number
}
const test: Test = { x: 1, y: 2 }
for (const [k, v] of test) {} // getting an error here
这是我的 tsconfig.json 的相关部分:
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
...
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
}
...
}
在我看来,打字稿在这里有足够的上下文来推断类型信息。 这是我应该做的吗? 例如,也许我以某种方式错误配置了打字稿? 否则有没有关于如何正确迭代打字稿中的对象的任何建议?
谢谢
对象也不能像在 JS 中那样迭代,TS 编译成 JS:
const test = { x: 1, y: 2 } for (const [k, v] of test) {} // getting an error here
使用Object.entries
代替:
declare interface Test {
x: number,
y: number
}
const test: Test = { x: 1, y: 2 }
for (const [k, v] of Object.entries(test)) {
// do stuff with k and v
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.