1. ホーム
  2. typescript

[解決済み] 安全なナビゲーション演算子(?.)または(!)とヌルプロパティパス

2022-04-23 10:24:41

質問

Angular 2 のテンプレートでは、安全な演算子 ?. は動作しますが component.ts TypeScript 2.0を使用しています。また、安全なナビゲーション演算子( !. が動作しない。

例えば

このTypeScript

if (a!.b!.c) { }

はこのJavaScriptにコンパイルされます。

if (a.b.c) { }

しかし、実行すると次のようなエラーが発生します。

未定義のプロパティ 'b' を読み取ることができません。

以下に代わるものはありますか?

if (a && a.b && a.b.c) { }

解決方法は?

TypeScript 3.7から、オプショナルチェイニングが使えるようになりました。

プロパティの例です。

let x = foo?.bar.baz();

と同等である。

let x = (foo === null || foo === undefined)
  ? undefined
  : foo.bar.baz();

さらに、呼び出すことができます。

オプションの呼び出し

function(otherFn: (par: string) => void) {
   otherFn?.("some value");
}

otherFn が呼び出されるのは otherFn とは等しくなりません。 null または undefined

IF文での使用オプションの連鎖

これは

if (someObj && someObj.someProperty) {
  // ...
}

は次のように置き換えることができます。

if (someObj?.someProperty) {
  // ...
}

参考 https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html