解构多级并将默认值分配给第一级对象

Destructuring multilevel and and assigning default value to a first level object

我正在尝试解构来自 API 的响应。响应如下所示。 程序中只会用到ab

response = {
   data: {
       someData: {
    a:1,
    b:2
    }

   }
}

解构 const {data: { someData: { a,b } } } = response

现在,如果响应中不存在数据,应用程序可能会崩溃。我想将默认值设置为 datasomeData。有没有办法设置默认值?

已尝试:但抛出 lint 错误作为意外标记

const {data= {}: { someData = {}: { a,b } } } = response

您需要提供如下所示的默认值:

const {data: { someData: { a, b } = {} } = {} } = response;
MDN 文档上的

This example 显示默认值应该在末尾,而不是紧跟在 属性 名称之后。

如果解包的属性是undefined,那么默认值将被用作嵌套解构的目标。

示例:

const response = {
  data: {}
};

const {data: { someData: { a, b } = {} } = {} } = response;

console.log(a, b);

另一种选择是使用可选链接,在我看来,这是提高代码可读性的更好方法:

response?.data?.someData?.a

默认值放在最后,而不是紧跟在变量之后。

它需要 someData: 嵌套对象来提供默认值。

const response = {};

const {data: {someData: { a,b } } = {someData: {a:0, b:0}} } = response;

console.log(a, b);