首页 > 解决方案 > 键入 Object.values(users).forEach

问题描述

我想知道如何修复此代码,如果我将房间类型更改为字符串,则会forEach((room: string)收到此错误:

'(room: string) => void' 类型的参数不能分配给'(value: unknown, index: number, array: unknown[]) => void' 类型的参数。参数 'room' 和 'value' 的类型不兼容。类型“未知”不能分配给类型“字符串”。

否则,如果我留空,我必须room as string在线转换batch.update

Object.values(users).forEach((room: string) => {
  batch.set(firestore.collection('messages').doc(), {
    ...message,
    room,
  })

  batch.update(firestore.collection('rooms').doc(room), { // if I leave room as `unknow` I have an error here.
     ...
  })
})

修复打字的正确方法是什么?

标签: typescript

解决方案


简单地声明回调参数类型应该没问题。

Object.values<string>(users).forEach(s => /* ... */)

推荐阅读