值为 0 的可选链属性

问题描述 投票:0回答:1

我有这样的代码:

if (action?.notificationKey && state.notifications[action.notificationKey]) {
    delete state.notifications[action.notificationKey];
}

这不能满足我,因为action.notificationKey可以有0值并且可选链接条件不满足。

重构为:

    if ("notificationKey" in action && state.notifications[action.notificationKey]) {
      delete state.notifications[action.notificationKey];
    }

不满足TS,并且它强调了第二个条件“TS2538:类型‘未定义’不能用作索引类型”

我还能如何检查可能存在零值的财产?

编辑:在粘贴以前的代码版本时修改了我的问题,添加了当前的可选链接

typescript redux optional-chaining
1个回答
0
投票

的? (Nullish Coalescing),如果未定义或 null 应该满足您的要求,则可用于设置默认值,并且第一个版本的两个打字稿都进行了一些修改

我认为它正是针对这种情况而引入的。 请注意,为了确实工作,您可以去掉 &&

if (action?.notificationKey) ?? 
  state.notifications[action.notificationKey]) {
  delete state.notifications[action.notificationKey];
}

空合并运算符 (??)

© www.soinside.com 2019 - 2024. All rights reserved.