オブジェクトプロパティアクセスにオプションのチェーン演算子を使用する


14

TypeScript 3.7は、オプションの連鎖演算子をサポートするようになりました。したがって、次のようなコードを記述できます。

const value = a?.b?.c;

つまり、あなたは、オブジェクト自体がかもしれオブジェクトのアクセスプロパティにこの演算子を使用することができますnullundefined。今、私がしたいことは基本的に同じですが、プロパティ名は動的です:

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

ただし、構文エラーが発生します。

エラーTS1005: ':'が必要です。

ここで何が悪いのですか?これは可能ですか?

PS:この提案は、これが不可能であると示唆しているようですbut(ただし、構文例が間違っているかもしれません)。


1
あなたは要点を逃し、オペレーターは?.
zessx

はい、もちろん、おかげでたくさん😊
ゴロローデン

回答:


17

ブラケット表記とオプションのチェーンを使用してプロパティにアクセスする場合は、ブラケットに加えてドットも必要です。

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

これはTC39提案で採用された構文です。それ以外の場合?は、これが3値式の一部なのか、オプションのチェーンの一部なのかをパーサーが判断するのが難しいためです。


1
ハード不可能に置き換えます。
vol7ron

@ vol7ronなぜそうなのか:
期待

特にエラーがある場合は、区別できません。
vol7ron
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.