Typescript 对象的类型为';未知';-forEach和map

Typescript 对象的类型为';未知';-forEach和map,typescript,Typescript,我正在使用forEach或map对对象进行循环。 但是,我在用于循环的变量上遇到类型错误。 错误是对象的类型为“未知”。 这发生在val.name,val.title 使用.forEach Object.entries(data).forEach( ([, val]) => { newObject[val.name] = { // Object is of type 'unknown' title: val.title // Obje

我正在使用
forEach
map
对对象进行循环。 但是,我在用于循环的变量上遇到类型错误。 错误是
对象的类型为“未知”。

这发生在
val.name
val.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..}

但它不接受处于该位置的类型

一个答案是回到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
,而不是使用
Object.entries()
产生的更严格的
unknown
。这已在TypeScript v4中测试并运行