我有这样的代码:
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:类型‘未定义’不能用作索引类型”
我还能如何检查可能存在零值的财产?
编辑:在粘贴以前的代码版本时修改了我的问题,添加了当前的可选链接
的? (Nullish Coalescing),如果未定义或 null 应该满足您的要求,则可用于设置默认值,并且第一个版本的两个打字稿都进行了一些修改
我认为它正是针对这种情况而引入的。 请注意,为了确实工作,您可以去掉 &&
if (action?.notificationKey) ??
state.notifications[action.notificationKey]) {
delete state.notifications[action.notificationKey];
}