Typescript(或者我们应该说ES)不允许对null / undefined对象进行解构。它抛出TypeError。
所以,假设我们有像
这样的东西let {a,b,c} = D;
其中D
可以是null
。
如果我们需要使用空检查进行条件解构赋值,那么我们会为那些旨在减少它的东西创建样板代码。
在这种情况下使用它的最优雅的方法是什么,或者我们是否应该仅为保证的非空对象使用解构?
答案 0 :(得分:10)
您可以使用空对象作为后备,如果D
为null
或undefined
,则指定的变量将为undefined
。
const D = null;
const { a, b, c } = D || {};
console.log(a, b, c);

另一种选择是使用object spread,因为传播null
或undefined
会导致空对象(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);