1. ホーム
  2. javascript

[解決済み] オブジェクトプロパティアクセスのためのオプションチェーニング演算子の使用

2023-05-22 02:59:15

質問

TypeScript 3.7では オプションの連鎖演算子 . したがって、次のようなコードを書くことができる。

const value = a?.b?.c;

つまり、この演算子を使ってオブジェクトのプロパティにアクセスすることができます。オブジェクト自体は null または undefined . さて、私がやりたいことは基本的に同じですが、プロパティ名は動的なものです。

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

しかし、そこでシンタックスエラーが発生します。

エラー TS1005: ':' が予想されます。

私はここで何を間違えているのでしょうか?これは可能なのでしょうか?

追記 提案 は、これが不可能であることを暗示しているように思えますが、どうでしょうか?(しかし、多分私は構文の例を間違っている)。

どのように解決するのですか?

ブラケット記法とオプショナルチェーンを使ってプロパティにアクセスする場合、ブラケットに加えてドットを使用する必要があります。

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

という構文が採用されています。 TC39 の提案 で採用された構文で、そうしないとパーサーがこの ? が三項表現の一部なのか、あるいはオプショナルチェイニングの一部なのかをパーサーが理解するのは難しいからです。

私の考え方:オプショナルチェイニングの記号は ? であり、それは ?. . オプショナルチェーンを行っている場合は、常に両方の文字を使うことになります。