En mi aplicación React Native, hago una llamada a la API y luego trato de aplicar el método json() al resultado, así:
await fetch(...) .catch(e => {...}) .then(res => res.json().then(...) Typescript lanza una advertencia en json() diciendo que Property 'json' does not exist on type 'void | Response' .
Qué quiero saber:
catch y then , el error desaparece. Pero quiero que catch solo los errores de fetch() , no del código en el bloque then . ¿Hay una manera de lograr esto?Usar encadenamiento opcional :
await fetch(...) .catch(e => {...}) .then(res => res?.json?.().then(...)El operador de encadenamiento opcional (
?.) le permite leer el valor de una propiedad ubicada en lo profundo de una cadena de objetos conectados sin tener que verificar que cada referencia en la cadena sea válida.
Si cambio el orden de
catchythen, el error desaparece. Pero quiero quecatchsolo los errores defetch(), no del código en el bloquethen. ¿Hay una manera de lograr esto?
Sí, use .then(…, …) en lugar de .then(…).catch(…) :
await fetch(...).then(res => res.json().then(…) , e => { … });