$refs!: {
helloComponent: Hello
}
https://github.com/vuejs/vue-class-component/blob/master/example/App.vue
特定のプロパティ、変数がnull
またはundefined
になるとTypeScriptが判断するシナリオがあります。ただし、この変数をnullにできないことが確実な場合は、この演算子を使用できます。
例を考えてみましょう:
let a = document.getElementById('hello');
if (a) {
a.style.width = '100px';
}
TypeScriptは、この要素が存在する保証がないため、変数a
がnullであると想定しています。そのため、その変数にアクセスする前に、if
ガードを設定しました。ただし、アプリケーションに常に#hello
、上記のコードを次のように書き換えることができます。
const a = document.getElementById('hello');
a!.style.width = '100px';
上記のコードは読みやすく、冗長ではありません。詳細はこちらをご覧ください https://www.typescriptlang.org/docs/handbook/release-notes/TypeScript-2-0.html
編集:@Simonによる技術的に正しいコメント:具体的には、操作x! nullおよび未定義の除外を含むx型の値を生成します。
それは「明確な代入アサーション」です:varname !: sometype
は、TypeScriptにvarname
が割り当てられていないかどうかをチェックしないように通知します(TypeScriptは、_Scriptが割り当てられている場所を推測できない場合でも、varname
が確実に割り当てられることを通知します)。通常、TypeScriptは変数が割り当てられていないかどうかを確認し、エラーを返します。
詳細については、以下を参照してください: https://www.typescriptlang.org/docs/handbook/release-notes/TypeScript-2-7.html#definite-assignment-assertions