Tsで定数の最後につける!マークの意味は?

公開日
2023-05-26
投稿者
Ryosuke Kamei
#tag

今回TypeScriptにおいて最後につける!マークの意味に疑問が出たので調べました。

const task = taskList.shift()! <- この最後の!部分


結論

taskList.shift()! におけるビックリマーク(!)は非null表明演算子(Non-null assertion operator)と呼ばれます。これは TypeScript の特殊な機能で、開発者がその式が null または undefined でないことを保証するために使用します。


この例では、taskList.shift() の結果は null または undefined になる可能性があります(配列から要素をすべて取り出した後など)。しかし、ビックリマークを使用することで、「この結果は絶対に null または undefined にならない」とTypeScriptコンパイラに伝えています。

注意点

ただし、この演算子を使用する際は注意が必要です。それは開発者自身がその結果が絶対に null や undefined にならないと確信している場合にのみ使用するべきです。なぜなら、もし null または undefined が実際に返された場合、ランタイムエラーが発生する可能性があるからです。