Solo estoy tratando de entender en qué nivel de un objeto usar el encadenamiento opcional. Si tengo el objeto dado
foo: { other: { name: "Bill" } }en lugar de hacer esto:
if (foo && foo.other && foo.other.name) { ... } Quiero usar el encadenamiento opcional pero siempre me encuentro simplemente agregando ?. en todos los niveles.
la forma correcta sería agregarlo a todos los niveles de esta manera:
if (foo?.other?.name) { }o puede omitir el último, ya que eso dará como resultado falso si no está allí:
if (foo?.other.name) { }Tendrá que agregar el ? en todos los niveles donde la clave anterior puede devolver un valor null .
const ohNo = this?.data?.set?.can?.break?.at?.any?.level; ¿Si tuvieras que dejar alguno fuera ? allí, obtendría excepciones de referencia nula cuando el nivel de profundidad anterior es null ...