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

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

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

TS2339:类型"Global"上不存在属性"myConfig".

我不想这么做:

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

我该如何扩展Global类型以包含myConfig,还是告诉TypeScript闭嘴并相信我?我更喜欢第一个.

我不想更改node.d.ts中的声明.我看了这个SO post,试了这个:

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

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

推荐答案

我看到了这篇文章并try 了以下内容:

你可能有大约vendor.d.ts个:

// some import 
// AND/OR some export

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

您的文件必须是importexports级的clean.这会将文件转换为module,并将其与global type declaration namespace断开连接.

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

Node.js相关问答推荐

查询嵌套数组中的最后一个元素具有特定值的mongoDB集合中的文档

Jest由于UUID而无法解析测试,即使在Jest中启用ESModule支持后也是如此

DocuSign:调用createEntaine时,RequestJWTApplicationToken返回401 AUTHORIZATION_INVALID_TOKEN

Mongoose更新许多不使用数组作为筛选器来更新记录

如何在mongodb中获取对象数组内部的数据

mongoose.model() 方法返回未定义

NestJS TypeORM 可选查询不起作用

如何使用 superagent/supertest 链接 http 调用?

NodeJS为exec设置环境变量

Node.js 服务器中没有缓存

gyp WARN EACCES 用户root没有访问开发目录的权限

在单独的模块中定义 Mongoose 模型

PhoneGap/Cordova Android 开发

从 zip 文件在 AWS 中创建 lambda 函数

如何仅在丢失的路由上将 Express.js 设置为 404?

当我try 向我的 S3 存储桶 (Node.js) 发送内容时,AWS 缺少凭证

Node.js 连接仅适用于本地主机

卸载代码/模块

为什么 Node.js 被命名为 Node.js?

CORS 错误:预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段授权