如何在es6中实现Nullable功能?我需要支持我以前的同事的源代码,后者使用了过多的es6破坏功能。像这样的东西,在每个地方:

dispatch(
    loadImports(response.items.map(({ importRecord: { ['import']: importId } }) => importId))
)

在此示例中,我可能会收到TypeError: Cannot read property 'import' of null错误。

我不想将整个结构重写为常规条件。或者,如果没有,如何在不重写的情况下处理它们?

UPD:

预期的同事版本:
https://jsbin.com/fesewiy/edit?js,console

当前版本:https://jsbin.com/qirixil/edit?js,console

最佳答案

因为您使用的是 map ,所以您需要为每个项目获取一些结果。
更改最少的最佳解决方案是仅使用一个级别的解构,然后过滤该数组以保留不虚假的值数组。

dispatch(
    loadImports(response.items
        .map(({ importRecord }) => importRecord && importRecord.import)
        .filter(v => v)
))

10-06 15:17