web-dev-qa-db-fra.com

Utilisation de l'opérateur de chaînage facultatif pour l'accès aux propriétés des objets

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).

13
Golo Roden

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.

10
Nicholas Tower