Estoy tratando de desestructurar la respuesta de la API. la respuesta se parece a la siguiente. Solo a y b se utilizarán en el programa.
response = { data: { someData: { a:1, b:2 } } } const {data: { someData: { a,b } } } = response
Ahora, si los datos no existen en la respuesta, hay posibilidades de que la aplicación se rompa. Quiero establecer el valor predeterminado para data y someData . ¿Hay alguna manera de establecer el valor predeterminado?
Probado : pero arrojando un error de pelusa como un token inesperado
const {data= {}: { someData = {}: { a,b } } } = response
El valor predeterminado va al final, no inmediatamente después de la variable.
Y necesita tener el objeto anidado someData: para proporcionar el valor predeterminado allí.
const response = {}; const {data: {someData: { a,b } } = {someData: {a:0, b:0}} } = response; console.log(a, b);Debe proporcionar los valores predeterminados como se muestra a continuación:
const {data: { someData: { a, b } = {} } = {} } = response;Este ejemplo en los documentos de MDN muestra que el valor predeterminado debe estar al final, no inmediatamente después del nombre de la propiedad.
Si la propiedad desempaquetada no está undefined , el valor predeterminado se usará como destino para la desestructuración anidada.
Ejemplo:
const response = { data: {} }; const {data: { someData: { a, b } = {} } = {} } = response; console.log(a, b);Otra opción es usar el encadenamiento opcional que, en mi opinión, es un mejor enfoque aquí para la legibilidad del código:
response?.data?.someData?.a