Estoy trabajando con una aplicación Angular en la que a la respuesta de la API le pueden faltar algunos datos esperados.
Esto puede bloquear la aplicación y una solución fácil ha sido usar el encadenamiento opcional;
foo.bar.baz => foo.bar?.baz
¿Hay alguna configuración o forma de tratar todos los '.' como '?.' y ¿sería esto una mala idea por alguna razón?
Por lo que pasé por los documentos oficiales de Angular y Typescript, no existe tal opción. Y no debería haber.
Definitivamente es una mala idea. Esto dará como resultado errores "silenciosos", que serán difíciles de encontrar a medida que el sistema crezca.
Por ejemplo, si tiene el siguiente modelo:
interface ContactInfoDTO { email: string; phone: string; } interface UserDTO { name: string; contactInfo: ContactInfoDTO; }Y asume que cada usuario en el sistema debe tener una información de contacto válida. Cuando accede a la propiedad de correo electrónico user?.contactInfo?.email, podría terminar con un error, sin saber que algo está realmente mal con sus datos, ya que no se produjo ningún error.
Use el encadenamiento opcional con cuidado, solo cuando sepa que es posible que algunos datos no estén definidos por algún motivo.
Hay un buen artículo sobre el tema: https://medium.com/@a.hafez852/is-opcional-chaining-really-a-good-addition-to-javascript-e4bbbc31909f