ブロックスコープ変数を再宣言できません 質問する

ブロックスコープ変数を再宣言できません 質問する

私はノード アプリを構築しており、.js の各ファイル内で、さまざまなパッケージを要求するためにこれを実行していました。

let co = require("co");

しかし、

ここに画像の説明を入力してください

letなど。TypeScript を使用すると、プロジェクト全体でこのような宣言/require は 1 つしか存在できないようです。現在のファイルにスコープされていると思っていたので、この点については混乱しています。

以前は動作していたプロジェクトがあったのですが、リファクタリング後に、至る所でエラーが発生するようになりました。

誰か説明してくれませんか?

ベストアンサー1

私が得た最良の説明は、Tamas Piro の投稿からのものでした。

TLDR; TypeScript は、グローバル実行環境に DOM 型付けを使用します。あなたの場合、グローバル ウィンドウ オブジェクトに 'co' プロパティがあります。

これを解決するには:

  1. 変数名を変更するか、

  2. TypeScript モジュールを使用し、空の export{} を追加します。

    export {};
    

    または

  3. DOM 型付けを追加せずにコンパイラ オプションを構成します。

TypeScript プロジェクト ディレクトリの tsconfig.json を編集します。

{
    "compilerOptions": {
        "lib": ["es6"]
      }
}

おすすめ記事