在 TypeScript 中创建一个全局变量

新手上路,请多包涵

在 JavaScript 中,我可以这样做:

  something = 'testing';

然后在另一个文件中:

  if (something === 'testing')

并且它将定义 something (只要它们以正确的顺序调用)。

我似乎无法弄清楚如何在 TypeScript 中做到这一点。

这是我尝试过的。

在 .d.ts 文件中:

 interface Window { something: string; }

然后在我的 main.ts 文件中:

  window.something = 'testing';

然后在另一个文件中:

  if (window.something  === 'testing')

这有效。但我希望能够失去 window. 的一部分,而让我的 something 成为全球性的。有没有办法在 TypeScript 中做到这一点?

(如果有人感兴趣,我真的想为我的应用程序设置日志记录。我希望能够从任何文件调用 log.Debug 而无需导入和创建对象。)

原文由 Vaccano 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
3 个回答

好的,所以这可能比你所做的更丑陋,但无论如何……

但我也这样做……

您可以在纯 TypeScript 中执行此操作,即使用 eval 函数,如下所示:

 declare var something: string;
eval("something = 'testing';")

以后你就可以做

if (something === 'testing')

这只不过是在没有 TypeScript 拒绝编译的情况下强制执行指令的 hack,我们 declare var 让 TypeScript 编译其余代码。

原文由 tforgione 发布,翻译遵循 CC BY-SA 3.0 许可协议

也在 这里 查看答案

// global.d.ts
export const thisIsAModule = true; // <-- definitely in a module

declare global {
    var foo: string;
}

原文由 francis 发布,翻译遵循 CC BY-SA 4.0 许可协议

declare global {
    interface Window {
      something: string;
    }
    const something: string;
  }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进