从 Javascript 中的对象安全提取 属性

Safely extracting property from object in Javascript

我有这个功能:

const someVar = someOtherVar.pipe(
        // filter((data) => data && !data.loading)   // Works
        filter(({ loading }) => !loading),  // Doesn't work if data is Null
);

现在,如评论中所述,评论代码在每种情况下都有效,但我想让它以第二种方式工作。可能存在数据为空的情况。所以,我会得到这个错误

TypeError: Cannot read property 'loading' of null

有什么方法可以安全地解构 JavaScript 对象吗?

null 不是一个对象,这就是为什么你不能安全地解构它 :-) 不,你不能在这里使用解构。

最接近有用的句法特征是 optional chaining proposal 中的 data => !data?.loading,但这等同于 !(data && data.loading) 而不是 data && !data.loading

这里有几个选项可以使它与你的第二个选项一起使用。

filter(x => x).filter(({ loading }) => !loading)

map(x => x || {}).filter(({ loading }) => !loading)

这两个选项可能不如您注释的代码有效,但这些可能会提高可读性。