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 |
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント