对象的类型为“未知”-forEach和map

时间:2020-07-15 17:02:04

标签: typescript

我正在使用forEachmap在对象上循环。 但是,我在循环使用的变量上遇到类型错误。 错误是Object is of type 'unknown'.

这发生在val.nameval.title上。

使用.forEach

    Object.entries(data).forEach(
      ([, val]) => {
        newObject[val.name] = { // Object is of type 'unknown'
          title: val.title // Object is of type 'unknown'
        }}
      )

使用.map

Object.entries(data).map(
  ([, val]) => {
    newObject[val.name] = { // Object is of type 'unknown'
      title: val.title // Object is of type 'unknown'
    }}
  )

我试图在变量val上指定类型,例如:

([, val: any]) => {..my code..}

但它不接受该位置的类型

1 个答案:

答案 0 :(得分:2)

一个答案是回到 JavaScript 中迭代对象属性的“经典”方式,在 Object.entries() 存在之前,如下所示:

const obj = {
  a: 1,
  b: 2,
  c: 3,
}
for (const key of Object.keys(obj)) {
  const value = obj[k]
  // Do something with 'value'...
}

这是可行的,因为 value 的类型是 any,而不是使用 unknown 时限制更多的 Object.entries()。这在 TypeScript v4 中已经过测试和工作。