web-dev-qa-db-ja.com

! TypeScriptのオブジェクトメソッドの後の演算子

TypeScriptのメソッドgetY()でオブジェクトXを返すメソッドa()を持つオブジェクトYがあります。このような表現はどういう意味ですか?

X.getY()!.a()

!演算子はnullをチェックするために使用されますが、具体的にどのように機能しますか?言語のどこで定義されていますか?

36
user2032922

これは「非ヌル表明演算子」と呼ばれ、x.getY()がヌルではないことをコンパイラーに伝えます。

これはTypeScript 2.0の新しい機能であり、 新機能 ページで確認できます。これは次のとおりです。

新しい!修正後の式演算子を使用して、型チェッカーがその事実を結論付けることができないコンテキストで、そのオペランドがnullでなく、未定義であることをアサートできます。具体的には、操作x! nullおよび未定義の除外を含むx型の値を生成します。 Tとしてのxとxの形式の型アサーションと同様に、!非ヌルのアサーション演算子は、発行された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
}

編集

この機能の文書化には問題があります:非ヌルのアサーション演算子(!)を文書化してください

62
Nitzan Tomer