初級 › 非nullアサーション(!)がコンパイラを騙して実行時エラーになる › パターン5
非nullアサーション(!)がコンパイラを騙して実行時エラーになる
変数名の後ろに!を付ける非nullアサーションは、「この値はnull/undefinedではない」とコンパイラに約束する構文です。
1 interface Item { 2 name: string; 3 } 4 function findItem(id: number): Item | undefined { 5 if (id === 1) return { name: "Pen" }; 6 return undefined; 7 } 8 const i = findItem(_); ^ 9 console.log(i!.name.toUpperCase());
main.ts:9
TypeError: Cannot read properties of undefined (reading 'name')
空欄を埋めてコンパイルを通す
id=2ではfindItemがundefinedを返します。i!はコンパイラの検査を止めるだけです。
次の問題