繁体   English   中英

如何迭代打字稿中的对象?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM