ちょっとした技術メモを忘れないうちに書いていく

TypeScriptの変数定義時にコンパイルエラー「Cannot redeclare block-scoped variable 」が発生する

2021-11-08


エラー内容

TypeScript で変数 name を定義するとコンパイルエラーが発生。 Playgroundでも発生する。

記述したコード

test.ts
const name = 'テスト';
console.log(name);

発生したエラー TypeScript_1.png

原因

変数名:name はすでに lib.dom.d.ts で定義されているので、グローバル変数で定義できない。

同じく caches などもエラーとなる。

どこにも定義されていない変数名(moromoro など)ならエラーにはならない。

対応方法1

モジュール化すればエラーは消えるのでどこかに export 文を記述する。

test.ts
let name = 'ss';
console.log(name);

export {};

対応方法2

グローバル変数にならないようにブロック化する。

test.ts
{
    let name = 'ss';
    console.log(name);
}

対応方法3?

ES6 移行なら発生しないとのことなので、target を「ES6」にする。

tsconfig.json
  "target": "ES6",
  "module": "commonjs"

ただ、私の環境ではコンパイルエラーのままでした、、、。


目次