以下のような2つのファイルがあるとき、
a.ts
const a = 1;
console.log(a);
b.ts
const a = 1;
console.log(a);
ブロック スコープの変数 ‘a’ を再宣言することはできません。ts(2451)」みたいなエラーが出る問題。
英語だと「Cannot redeclare block-scoped variable ‘a’.ts(2451)」みたいなエラーです。
このエラーは、tsconfig.jsonで以下のように書くと解決できますが
"moduleDetection": "force",
そもそもファイルを「スクリプト」ではなく「モジュール」として扱うようにすれば、勝手にブロックスコープが生成されて「この変数aは別物だね」とできます。
たとえば、import文やexport文を使うと勝手にモジュールとして扱われるようになります。
そして一般的なプログラミングで、import文やexport文を使わずにコードを書くのは稀なので、気にしなくて良いと思います。
ちなみにexport {};
を追加すると、強制的にモジュールとして扱うこともできます。その場合"moduleDetection": "force"
は不要です。
おわり
コメント