7

目前我正在使用以下代码进行解构:

const myObj1 = {name: 'Abc'}
const {name} = myObj1
console.log(name)
const myObj2 = null
const {name2} = myObj2  // this will give error

现在,由于我们有可选的链接,我可以这样做:

const myObj = {name: 'Abc'}
const {name} = myObj
console.log(name) // 'Abc'
const myObj2 = null
const name2 = myObj2?.myObj2
console.log(name2) // undefined

有没有更好的方法或安全的方法来使用无效合并或可选链接进行解构?

4

3 回答 3

9

const name2 = myObj2?.myObj2- 这不是解构。

myObj2?.myObj2将返回undefined您分配给name2.

你可以简单地做

const myObj2 = null;
const { name2 } = { ...myObj2 };
console.log(name2); // undefined

如果要使用空值合并运算符,则应如下所示使用它:

const myObj2 = null
const {name2} =  myObj2 ?? {};
console.log(name2) // undefined

如果为 null 或未定义,nullish 合并运算符将返回右侧的操作数myObj2,否则它将返回左侧的操作数,在您的情况下为myObj2.

于 2020-07-04T09:51:58.870 回答
1

您正在做正确的事情,但是当您想要解构多个属性时,它不会解构并且效率不高,您可以这样做。

const myObj = {name: 'Abc', email: "test"}
const {name,email} = myObj
console.log(name, email) // 'Abc' "test"
const myObj1 = null
const {name1,email1} = myObj1 || {} // or myObj1 ?? {}
console.log(name1,email1) // undefined undefined

于 2020-07-04T09:53:13.460 回答
0

你可以试试||

const myObj2 = null;
const {name2, name3} = myObj2 || {}
console.log(name2, name3);

const myObj3 = {name4: "name4"};
const {name4, name5} = myObj3 || {}
console.log(name4, name5);

希望这有帮助。

于 2020-07-04T10:06:58.737 回答