一尘不染

在node.js中扩展TypeScript全局对象

node.js

我有一个node.js应用程序,该应用程序将一些配置信息附加到该global对象:

global.myConfig = {
    a: 1,
    b: 2
}

TypeScript编译器不喜欢这样,因为该Global类型没有名为的对象myConfig

TS2339:类型“ Global”上不存在属性“ myConfig”。

我不想这样做:

global['myConfig'] = { ... }

如何扩展Global类型以包含myConfig或只是告诉TypeScript关闭并信任我?我希望第一个。

我不想更改其中的声明node.d.ts。我看到了这样的帖子,并尝试了这个:

declare module NodeJS  {
    interface Global {
        myConfig: any
    }
}

作为扩展现有Global接口的一种方法,但似乎没有任何效果。


阅读 499

收藏
2020-07-07

共1个答案

一尘不染

我看到了这样的帖子,并尝试了这个:

您可能有类似以下内容vendor.d.ts

// some import 
// AND/OR some export

declare module NodeJS  {
    interface Global {
        spotConfig: any
    }
}

您的文件需要 清除 任何根级别importexports。这将把文件变成一个 模块, 并将其与 全局类型声明名称空间 断开连接。

更多:https
:
//basarat.gitbooks.io/typescript/content/docs/project/modules.html

2020-07-07