[解決済み] オブジェクトメソッドの後のタイプスクリプトの演算子
2023-01-28 20:47:33
質問
あるオブジェクト
X
とメソッド
getY()
オブジェクトを返す
Y
メソッドで
a()
のように、typescriptで記述します。
このような式は何を意味するのでしょうか。
X.getY()!.a()
というのは
!
演算子はnullに対するチェックに使われると思いますが、具体的にどのように動作するのでしょうか?言語のどこで定義されているのでしょうか?
どのように解決するのですか?
これは "Non-null assertion operator" と呼ばれるもので、コンパイラに次のように伝えます。
x.getY()
がNULLでないことをコンパイラに伝えます。
これはtypescript 2.0の新しい機能で、それについては 新機能 のページで読むことができます。
新しいポストフィックス式演算子 ! オペランドが非 NULL および非定義であることを表明するために使用できます。 と断定するために使用することができます。具体的には、演算子 は、NULLおよび未定義を除いたxの型の値を生成します。 xおよびx as Tの形式の型アサーションと同様に、! non-null アサーション演算子は、生成される JavaScript コードから削除されます。 JavaScript コードで削除されます。
// Compiled with --strictNullChecks
function validateEntity(e?: Entity) {
// Throw exception if e is null or invalid entity
}
function processEntity(e?: Entity) {
validateEntity(e);
let s = e!.name; // Assert that e is non-null and access name
}
編集
関連
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】未定義のオブジェクトプロパティを検出する
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み] Dartでオブジェクトをクローンする(ディープコピーする)にはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン