TypeScript 3.7 prend désormais en charge 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).
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:
const value = a?.[b]?.c;
C'est la syntaxe qui a été adoptée par le proposition TC39 , car sinon, il est difficile pour l'analyseur de déterminer si ce ?
fait partie d'une expression ternaire ou fait partie d'un chaînage facultatif.