我想将我的NodeJS配置存储在全局范围内。
我试图遵循此=> 在node.js和其他Stackoverflow解决方案中扩展TypeScript Global对象,
我制作了一个名为global.d.ts的文件,其中包含以下代码
declare global {
namespace NodeJS {
interface Global {
config: MyConfigType
}
}
}
Run Code Online (Sandbox Code Playgroud)
全局作用域的扩展只能直接嵌套在外部模块或环境模块声明中。ts(2669)
但是这样做很好=>
declare module NodeJS {
interface Global {
config: MyConfigType
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,我需要导入文件MyConfigType以键入配置,但是第二个选项不允许这样做。
ssh*_*shh 197
您可以指出该文件是一个模块,如下所示:
export {};
declare global {
namespace NodeJS {
interface Global {
config: MyConfigType
}
}
}
Run Code Online (Sandbox Code Playgroud)
Cob*_*urn 14
如果您.d.ts作为“脚本”执行(它没有语句),则根本import/export不需要,只需将其删除即可。declare global“脚本”已经在全局上下文中执行。
(旁白:这就是添加export {}起作用的原因,它将它从“脚本”变成“模块”,并且.d.ts默认情况下您的声明不再是全局的)
以修改示例console:
前:
declare global {
interface Console {
log2: (...args: any[])=>void;
}
}
Run Code Online (Sandbox Code Playgroud)
后:
// This will be global!
interface Console {
log2: (...args: any[])=>void;
}
Run Code Online (Sandbox Code Playgroud)
感谢 @okcoker 和/sf/answers/2958041971/对 .d.ts 上下文的解释
Ben*_*ing 13
或者,如果您尝试在浏览器上下文中添加全局类型:
export {};
declare global {
interface Window {
ENV: any;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2037 次 |
| 最近记录: |