TypeScript 3.7 prend désormais en charge l' opérateur de chaînage facultatif . Par conséquent, vous pouvez écrire du code tel que:
const value = a?.b?.c;
C'est-à-dire que vous pouvez utiliser cet opérateur pour accéder aux propriétés d'un objet, où l'objet lui-même peut être null
ou undefined
. Maintenant, ce que je voudrais faire est fondamentalement le même, mais les noms de propriété sont dynamiques:
const value = a?[b]?.c;
Cependant, là, j'obtiens une erreur de syntaxe:
erreur TS1005: ':' attendue.
Qu'est-ce que je fais mal ici? Est-ce seulement possible?
PS: La proposition semble impliquer que ce n'est pas possible 😕 (mais je me trompe peut-être sur les exemples de syntaxe).
javascript
typescript
optional-chaining
Golo Roden
la source
la source
?.
Réponses:
Lorsque vous accédez à une propriété à l'aide de la notation entre crochets et du chaînage facultatif, vous devez également avoir un point en plus des crochets:
C'est la syntaxe qui a été adoptée par la proposition TC39 , car sinon, il est difficile pour l'analyseur syntaxique de savoir si cela
?
fait partie d'une expression ternaire ou d'une partie de chaînage facultatif.la source
: