Code Fix

初級

Cannot find name の原因と直し方

宣言されていない変数・関数名を参照したときに出るエラーです。TypeScriptは近い名前が見つかると「Did you mean 'x'?」という候補も一緒に表示してくれます。

エラーメッセージの読み方

main.ts(2,13): error TS2552: Cannot find name 'totall'. Did you mean 'total'?
main.ts
ファイル名
2
行番号
13
列番号 — この位置でtscが検査に失敗しました
TS2552
エラーコード — 検索するとTypeScriptの解説が見つかります
Cannot find name 'totall'. Did you mean 'total'?
内容 — 期待していたもの、または受け付けられなかったもの

このエラーが出る典型パターン

パターン1

 1  const total: number = 100;
 2  console.log(totall);
                   ^
main.ts(2,13): error TS2552: Cannot find name 'totall'. Did you mean 'total'?

変数名のスペルミスです。宣言したtotalと1文字違うだけで、別の名前として扱われます。

直し方: totalltotal にします。

この問題を解いてみる →

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

パターン2

 1  function square(n: number): number {
 2    return n * n;
 3  }
 4  console.log(squre (4));
                   ^
main.ts(4,13): error TS2552: Cannot find name 'squre'. Did you mean 'square'?

関数名のスペルミスです。定義したsquareと違う名前を呼び出そうとしています。

直し方: squresquare にします。

この問題を解いてみる →

パターン3

 1  const userName: string = "Al";
 2  console.log(`Hello, ${usrName }`);
                              ^
main.ts(2,23): error TS2552: Cannot find name 'usrName'. Did you mean 'userName'?

テンプレートリテラルの中でも変数名のタイプミスは同じようにチェックされます。

直し方: usrNameuserName にします。

この問題を解いてみる →

よくある誤解

JavaScriptのReferenceErrorと違い、TypeScriptではこの種のタイプミスは実行前のコンパイル段階で検出されます。実行してから気づくのではなく、tscを通した時点で発覚します。

まとめ

Cannot find nameは初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

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