typescript - 键入 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.
...
})
})
修复打字的正确方法是什么?
解决方案
简单地声明回调参数类型应该没问题。
Object.values<string>(users).forEach(s => /* ... */)
推荐阅读
- opengl - Intel HD 4xxx / 5xxx GPU 上的计算着色器链接失败
- firebase - 是否可以使用 Rest-API 在我的不使用 Admin SDK 的应用服务器上订阅令牌?
- java - 根据我们得到的数据筛选数据
- r - 将图例添加到多行 ggplot
- powershell - 如何使用 PowerShell 删除单个 NAPTR 记录?
- pymongo - PyMongo 检查条目是否已经在数组中
- python - 根据列中的列表项拆分数据框
- javascript - 在请求中仅指定两个参数之一
- c# - 我可以在 Visual Studio 2017 中使用 C# 应用程序调试 C dll 吗?
- json - 如何在时间轴(Material-UI)中使用 for 循环显示数据 - React