Verwenden des optionalen Verkettungsoperators für den Zugriff auf Objekteigenschaften


14

TypeScript 3.7 unterstützt jetzt den optionalen Verkettungsoperator . Daher können Sie Code schreiben wie:

const value = a?.b?.c;

Mit diesem Operator können Sie also auf Eigenschaften eines Objekts zugreifen, in denen sich das Objekt selbst befinden kann nulloder undefined. Was ich jetzt gerne machen würde, ist im Grunde dasselbe, aber die Eigenschaftsnamen sind dynamisch:

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

Dort erhalte ich jedoch einen Syntaxfehler:

Fehler TS1005: ':' erwartet.

Was mache ich hier falsch? Ist das überhaupt möglich?

PS: Der Vorschlag scheint zu implizieren, dass dies nicht möglich ist 😕 (aber vielleicht verstehe ich die Syntaxbeispiele falsch).


1
Sie verpassen den Punkt, der Betreiber ist?.
Zessx

Ja, natürlich vielen Dank 😊
Golo Roden

Antworten:


17

Wenn Sie mit der Klammernotation und der optionalen Verkettung auf eine Eigenschaft zugreifen, müssen Sie zusätzlich zu den Klammern einen Punkt haben:

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

Dies ist die Syntax, die vom TC39-Vorschlag übernommen wurde , da der Parser ansonsten nur schwer herausfinden kann, ob dies ?Teil eines ternären Ausdrucks oder Teil einer optionalen Verkettung ist.


1
Ich würde hart durch unmöglich ersetzen .
Vol7ron

@ vol7ron warum so - ich denke, es kann sich freuen:
AnArrayOfFunctions

Es wäre nicht in der Lage zu unterscheiden, insbesondere wenn es Fehler gibt.
Vol7ron
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.