Code Fix

初級 › 非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')

空欄を埋めてコンパイルを通す

広告
広告スロット(未設定)

非nullアサーション(!)がコンパイラを騙して実行時エラーになる

実際にはundefinedだった場合、型チェックは通過しますが実行時に例外が発生します。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)