1. ホーム
  2. javascript

[解決済み] 配列や関数でオプショナルチェーンを使用するには?

2022-05-16 14:24:45

質問

オブジェクトの代わりに配列でオプショナルチェーンを使おうとしていますが、やり方がよくわかりません。

私がやろうとしていることは次のとおりです。 myArray.filter(x => x.testKey === myTestKey)?[0] . また、関数で同様のことを試しています。

let x = {a: () => {}, b: null}
console.log(x?b());

しかし、このようにエラーが出てしまうので、配列や関数で使うにはどうしたらいいのでしょうか。

どうすれば解決するのでしょうか?

をつける必要があります。 . の後に ? を追加することで、任意の連鎖を使用することができます。

myArray.filter(x => x.testKey === myTestKey)?.[0]

遊び場リンク

を使うだけで ? だけでは、コンパイラは条件演算子を使おうとしていると判断してしまいます。 : が見えないのでエラーになる)。

オプショナルチェイニングはTypeScriptだけのものではない - 完成された提案である をプレーンなJavaScriptで もそうです。

上記のようなブラケット記法で使用できますが、ドット記法のプロパティアクセスでも使用できます。

const obj = {
  prop2: {
    nested2: 'val2'
  }
};

console.log(
  obj.prop1?.nested1,
  obj.prop2?.nested2
);

そして関数呼び出しで

const obj = {
  fn2: () => console.log('fn2 running')
};

obj.fn1?.();
obj.fn2?.();