如何遍历打字稿中的对象?

时间:2020-09-22 18:44:30

标签: 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"
    ]
  }
  ...
}


在我看来,打字稿在这里将具有足够的上下文来推断类型信息。这是我应该能够做的事情吗?例如也许我以某种方式错误配置了打字稿?否则,对于如何适当地遍历打字稿中的对象有什么建议吗?

谢谢

1 个答案:

答案 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
}