【问题标题】:TypeError: Cannot convert undefined or null to object javascriptTypeError:无法将 undefined 或 null 转换为对象 javascript
【发布时间】: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 nulldelete undefined 对我来说很好用。

标签: javascript typescript


【解决方案1】:

只需删除删除中的?.delete rooms[roomId][socket.id]; 您已经检查过该值是否存在

【讨论】:

    猜你喜欢
    • 2021-12-07
    • 2022-10-24
    • 2019-10-25
    • 1970-01-01
    • 2022-06-16
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    相关资源
    最近更新 更多