【发布时间】:2023-01-20 06:15:58
【问题描述】:
尝试删除对象时出现错误。目前没有数据,因为它是通过其他代码添加的。可能的问题是我可能需要删除数据(如果存在)。我来宾我需要一种方法来检查数据是否存在,然后再删除
错误消息:TypeError:无法将 undefined 或 null 转换为对象
错误来自这一行:delete rooms?.[roomId]?.[socket.id];
interface IDevice {
deviceId: string;
deviceName?: string;
socketId: string;
isReconnecting?: true | false;
}
const rooms: Record<string, Record<string, IDevice>> = {};
if (typeof rooms?.[roomId]?.[socket.id] !== 'undefined' && rooms?.[roomId]?.[socket.id] !== null) {
delete rooms?.[roomId]?.[socket.id];
}
【问题讨论】:
-
错误是哪一行?此外,您不需要
if中的可选链接,因为您已经检查过属性是否存在。 -
当我运行这条线时出现错误: delete rooms?.[roomId]?.[socket.id];
-
你能分享完整的错误跟踪吗?
-
更简单地重现该问题也很有用。
delete null和delete undefined对我来说很好用。
标签: javascript typescript