Code Fix

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

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

変数名の後ろに!を付ける非nullアサーションは、「この値はnull/undefinedではない」とコンパイラに約束する構文です。

 1  interface User {
 2    name: string;
 3  }
 4  function findUser(id: number): User | undefined {
 5    if (id === 1) return { name: "Al" };
 6    return undefined;
 7  }
 8  const u = findUser(_);
                       ^
 9  console.log(u!.name.toUpperCase());
main.ts:9 TypeError: Cannot read properties of undefined (reading 'toUpperCase')

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

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

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

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

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

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