解构可空对象

时间:2017-07-20 09:03:19

标签: typescript ecmascript-6

Typescript(或者我们应该说ES)不允许对null / undefined对象进行解构。它抛出TypeError。

所以,假设我们有像

这样的东西
let {a,b,c} = D;

其中D可以是null

如果我们需要使用空检查进行条件解构赋值,那么我们会为那些旨在减少它的东西创建样板代码。

在这种情况下使用它的最优雅的方法是什么,或者我们是否应该仅为保证的非空对象使用解构?

1 个答案:

答案 0 :(得分:10)

您可以使用空对象作为后备,如果Dnullundefined,则指定的变量将为undefined



const D = null;
const { a, b, c } = D || {};

console.log(a, b, c);




另一种选择是使用object spread,因为传播nullundefined会导致空对象(see this SO answer)。



const D = null;
const { a, b, c } = { ...D };

console.log(a, b, c);




如果需要处理嵌套解构,请使用默认值:



const D = null;
const { a, a: { z } = {}, b, c } = { ...D };

console.log(a, b, c, z);