Code Fix

初級

Cannot assign to because it is a constant の原因と直し方

constで宣言した変数に再代入しようとしたときに出るエラーです。JavaScriptでは実行時のTypeErrorでしたが、TypeScriptは実行前のコンパイル段階でこれを検出します。

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

main.ts(2,1): error TS2588: Cannot assign to 'count' because it is a constant.
main.ts
ファイル名
2
行番号
1
列番号 — この位置でtscが検査に失敗しました
TS2588
エラーコード — 検索するとTypeScriptの解説が見つかります
Cannot assign to 'count' because it is a constant.
内容 — 期待していたもの、または受け付けられなかったもの

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

パターン1

 1  const count = 5;
 2  count     = 6;
        ^
 3  console.log(count);
main.ts(2,1): error TS2588: Cannot assign to 'count' because it is a constant.

countはconstで宣言されているため再代入できません。値を変えたい場合はletで宣言します。

直し方: countlet dummy にします。

この問題を解いてみる →

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

パターン2

 1  const MAX = 100;
 2  function raiseLimit() {
 3    MAX       = 200;
          ^
 4  }
 5  raiseLimit();
 6  console.log(MAX);
main.ts(3,3): error TS2588: Cannot assign to 'MAX' because it is a constant.

MAXはconstです。関数の中からであっても再代入は許されません。

直し方: MAXlet dummy にします。

この問題を解いてみる →

パターン3

 1  const name = "Al";
 2  name      = "Bob";
        ^
 3  console.log(name);
main.ts(2,1): error TS2588: Cannot assign to 'name' because it is a constant.

nameはconstで宣言した変数です。別の値を代入し直すことはできません。

直し方: namelet dummy にします。

この問題を解いてみる →

よくある誤解

JavaScriptの経験がある人は「これは実行時エラーのはず」と考えがちですが、TypeScriptでは同じ間違いがコンパイルエラーに格上げされます。実行する前に、tscを通した時点で気づけます。

まとめ

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

演習をはじめる

関連するエラー

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