Utilizzo dell'operatore di concatenamento opzionale per l'accesso alla proprietà dell'oggetto


14

TypeScript 3.7 ora supporta l' operatore di concatenamento opzionale . Quindi, puoi scrivere codice come:

const value = a?.b?.c;

Vale a dire, è possibile utilizzare questo operatore per accedere alle proprietà di un oggetto, dove può essere l'oggetto stesso nullo undefined. Ora quello che vorrei fare è sostanzialmente lo stesso, ma i nomi delle proprietà sono dinamici:

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

Tuttavia, lì ottengo un errore di sintassi:

errore TS1005: ':' previsto.

Cosa sto facendo di sbagliato qui? È possibile?

PS: la proposta sembra implicare che ciò non sia possibile 😕 (ma forse ho sbagliato gli esempi di sintassi).


1
Ti manca il punto, l'operatore è?.
zessx

Sì, certo, grazie mille 😊
Golo Roden,

Risposte:


17

Quando si accede a una proprietà utilizzando la notazione parentesi e il concatenamento opzionale, è necessario disporre anche di un punto oltre alle parentesi:

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

Questa è la sintassi adottata dalla proposta TC39 , perché altrimenti è difficile per il parser capire se ?fa parte di un'espressione ternaria o parte di un concatenamento facoltativo.


1
Sostituirei duro con impossibile .
vol7ron,

@ vol7ron perché così - penso che possa aspettare:
AnArrayOfFunctions

Non sarebbe in grado di distinguere, specialmente quando ci sono errori.
vol7ron,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.