在JavaScript中,我可以这样做:
 something = 'testing';
Run Code Online (Sandbox Code Playgroud)
然后在另一个文件中:
 if (something === 'testing')
Run Code Online (Sandbox Code Playgroud)
它将something被定义(只要它们以正确的顺序被调用).
我似乎无法弄清楚如何在TypeScript中做到这一点.
这就是我尝试过的.
在.d.ts文件中:
interface Window { something: string; }
Run Code Online (Sandbox Code Playgroud)
然后在我的main.ts文件中:
 window.something = 'testing';
Run Code Online (Sandbox Code Playgroud)
然后在另一个文件中:
 if (window.something  === 'testing')
Run Code Online (Sandbox Code Playgroud)
这很有效.但我希望能够失去window.它的一部分,让我的something全球化.有没有办法在TypeScript中做到这一点?
(如果有人感兴趣,我真的想为我的应用程序设置日志记录.我希望能够log.Debug从任何文件调用而无需导入和创建对象.)
每当我尝试在 TypeScript 环境中向全局 Nodejs 全局 namspace 添加函数时,都会收到此错误。
元素隐式具有“any”类型,因为类型“typeof globalThis”没有索引签名
声明全局命名空间
declare global {
  namespace NodeJS {
    interface Global {
      signin(): string[]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)
所以如果我尝试这个
global.signin = () => {}
Run Code Online (Sandbox Code Playgroud)
它返回一个
元素隐式具有“any”类型,因为类型“typeof globalThis”没有索引签名
我有一个node.js应用程序,它将一些配置信息附加到global对象:
global.myConfig = {
    a: 1,
    b: 2
}
Run Code Online (Sandbox Code Playgroud)
TypeScript编译器不喜欢这个,因为该Global类型没有名为的对象myConfig:
TS2339:"全局"类型中不存在属性"myConfig".
我不想这样做:
global['myConfig'] = { ... }
Run Code Online (Sandbox Code Playgroud)
如何扩展Global类型以包含myConfig或仅告诉TypeScript闭嘴并信任我?我更喜欢第一个.
我不想改变里面的声明node.d.ts.我看到了这个SO帖子并尝试了这个:
declare module NodeJS  {
    interface Global {
        myConfig: any
    }
}
Run Code Online (Sandbox Code Playgroud)
作为扩展现有Global界面的一种方式,但它似乎没有任何影响.
问题:如何解决 Typescript 编译器 ( tsc) 错误“命名空间 'NodeJS' 没有导出成员 'Global' ”?
在运行时tsc,我突然在“遗留”(不是新)项目中看到以下错误:
node_modules/expect/node_modules/@jest/types/build/Global.d.ts:85:62 - error TS2694: Namespace 'NodeJS' has no exported member 'Global'.
85 export interface Global extends GlobalAdditions, Omit<NodeJS.Global, keyof GlobalAdditions> {
                                                                ~~~~~~
Run Code Online (Sandbox Code Playgroud)
我尝试添加安装@types/node并添加"types": ["node"]到我的tsconfig(如this SO post中所建议的),但这没有帮助。
节点版本:12.18.4
 
Jest 版本:26.5.3