TypeScriptでlet変数が関数内なら宣言前に使えてしまう

TypeScriptでlet変数が関数内なら宣言前に使えてしまう

今まで当たり前すぎて気にもしたことなかったですが、let変数は、変数宣言前に変数を使用することはできません。

例えば以下コード。

a++; // こういう書き方はできません
let a;

ただし、以下のように関数内に記述している場合はTypeScriptはエラーとして報告してくれないのです。

function foo(){
  return a; // 宣言前に記述しているのにコンパイルが通っちゃう
}
console.log(foo()); // undefinedと表示される
let a:number = 10;
console.log(foo()); // 10と表示される

トランスパイルされたソースを見るとlet宣言がvar宣言になっているだけなので当たり前っちゃ当たり前なんですが、こんな書き方がコンパイル通ってしまうとバグの温床なのでTypeScriptのほうでコンパイルエラーとしてほしいですね。

項目 バージョン
TypeScript 3.0.1

TypeScriptでブロックスコープ変数が関数内なら使えてしまう

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました