1. ホーム
  2. typescript

[解決済み] グローバルスコープの拡張は、外部モジュールまたはアンビエントモジュール宣言にのみ直接ネストすることができます(2669)

2022-09-05 06:08:12

質問

NodeJSの設定をグローバルスコープに保存したいのですが、どうすればよいですか?

このようにやってみました => node.jsでTypeScriptのグローバルオブジェクトを拡張する とstackoverflowにある他の解決策を試してみました。

私はglobal.d.tsというファイルを作成し、そこに以下のコードを記述しました。

declare global {
    namespace NodeJS {
      interface Global {
          config: MyConfigType
      }
    }
  }

グローバルスコープの拡張は 外部モジュールまたはアンビエントモジュール宣言.ts(2669)に直接ネストすることができます。

が、これをやるとうまくいく =>

declare module NodeJS  {
    interface Global {
        config: MyConfigType
    }
}

をインポートする必要があります。 MyConfigType をインポートする必要があるのですが、2番目のオプションではそれができません。

どのように解決するのですか?

このファイルがモジュールであることを示すには、次のようにすればよいでしょう。

export {};

declare global {
    namespace NodeJS {
        interface Global {
            config: MyConfigType
        }
    }
}