Uso del operador de encadenamiento opcional para el acceso a la propiedad del objeto


14

TypeScript 3.7 ahora admite el operador de encadenamiento opcional . Por lo tanto, puede escribir código como:

const value = a?.b?.c;

Es decir, puede usar este operador para acceder a las propiedades de un objeto, donde el objeto en sí puede estar nullo undefined. Ahora, lo que me gustaría hacer es básicamente lo mismo, pero los nombres de las propiedades son dinámicos:

const value = a?[b]?.c;

Sin embargo, allí recibo un error de sintaxis:

error TS1005: ':' esperado.

¿Qué estoy haciendo mal aquí? ¿Es esto posible?

PD: La propuesta parece implicar que esto no es posible 😕 (pero tal vez entiendo mal los ejemplos de sintaxis).


1
Se pierde el punto, el operador es?.
zessx

Sí, por supuesto, muchas gracias 😊
Golo Roden

Respuestas:


17

Al acceder a una propiedad utilizando la notación de corchetes y el encadenamiento opcional, también debe tener un punto además de los corchetes:

const value = a?.[b]?.c;

Esta es la sintaxis que fue adoptada por la propuesta TC39 , porque de lo contrario es difícil para el analizador averiguar si esto ?es parte de una expresión ternaria o parte del encadenamiento opcional.


1
Me sustituyo dura con imposibles .
vol7ron

@ vol7ron, ¿por qué? Creo que puede :
esperarlo

No sería capaz de distinguir, especialmente cuando hay errores.
vol7ron
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.