我只是在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"
]
}
...
}
在我看来,打字稿在这里将具有足够的上下文来推断类型信息。这是我应该能够做的事情吗?例如也许我以某种方式错误配置了打字稿?否则,对于如何适当地遍历打字稿中的对象有什么建议吗?
谢谢
答案 0 :(得分:3)
对象也不能像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
}