const

constはES6/TypeScriptで提供されている非常に嬉しい追加です。変数を不変(immutable)にできます。これは、可読性だけでなく実行時の観点からも優れています。 constを使うにはvarconstで置き換えてください:

const foo = 123;

この構文は、let constant fooすなわち変数+動作指定子のようなものを入力させる他の言語よりも、ずっと優れています(私見です)。

constは可読性とメンテナンス性の両方において良い習慣であり、魔法のリテラル(magic literals)を使うことを避けられます。

// Low readability
if (x > 10) {
}
// Better!
const maxRows = 10;
if (x > maxRows) {
}

const宣言は初期化する必要がある

以下はコンパイルエラーです:

const foo; // ERROR: const declarations must be initialized

代入の左辺に定数は置けない

定数は作成後は不変です。したがって、新しい値を代入しようとするとコンパイルエラーになります:

const foo = 123;
foo = 456; // ERROR: Left-hand side of an assignment expression cannot be a constant

ブロックスコープ

constletと同様にブロックスコープです:

const foo = 123;
if (true) {
const foo = 456; // Allowed as its a new variable limited to this `if` block
}

深い不変性

constは、変数の参照(reference)を保護する限りにおいて、オブジェクトリテラルでも機能します:

const foo = { bar: 123 };
foo = { bar: 456 }; // ERROR : Left hand side of an assignment expression cannot be a constant

ただし、以下に示すように、オブジェクト内部のプロパティを変更することは可能です。

const foo = { bar: 123 };
foo.bar = 456; // Allowed!
console.log(foo); // { bar: 456 }

できるだけ const にしよう

後で変数の初期化を行ったり、再代入する予定が無いのであれば const を使いましょう。(再代入の場合は let を使います)