web-dev-qa-db-ja.com

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

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

const value = a?.b?.c;

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

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

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

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

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

PS: proposal は、これが不可能であることを暗示しているようです???? (ただし、構文例が間違っている可能性があります)。

13
Golo Roden

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

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

これは TC39プロポーザル で採用された構文です。それ以外の場合は、パーサーがこの?は、3項式の一部またはオプションの連鎖の一部です。

10
Nicholas Tower