【问题标题】:Expose global variable in angular以角度公开全局变量
【发布时间】:2018-08-16 18:00:16
【问题描述】:

我知道公开全局变量不是一个好习惯,但在我的情况下这是必要的。我的 Angular 应用程序旁边的网页上有另一个应用程序,这些应用程序必须访问一个全局公开的变量。

我的问题是,如何在 angular 中公开一个变量? 当我像这样将它附加到document 时:document.test = "Hello";,TypeScript 会抛出错误Property 'test' does not exist on type 'Document'.

还有其他方法吗?

【问题讨论】:

  • 那时主要是 TS 而不是 JS 的问题。

标签: angular typescript global-variables


【解决方案1】:

一般来说,是的,如果您只有一个 Angular 应用程序,您不会想这样做。为了回答您的问题,以便您可以让应用程序的其他部分正常工作,您是否尝试在文件顶部使用声明语句来防止 TypeScript 抱怨?

// import statements

declare var document;

http://blogs.microsoft.co.il/gilf/2013/07/22/quick-tip-typescript-declare-keyword/

此外,您可以让 TypeScript 编译器将已知变量视为 any 类型,这样您就可以使用它可能不知道的任何您想要的属性。为此,您只需使用as 语法转换变量。最好使用 TypeScript 的类型检查,但您可以通过这样做来选择退出。

(document as any).foo = 'bar';

您还应该能够为这些全局属性创建一个接口并将文档转换为该类型,以便在您的 Angular 代码中利用 TypeScript 的类型安全性。

interface GlobalDocumentProps {
    foo: string;
}

(document as GlobalDocumentProps).foo = 'bar';

【讨论】:

  • 它仍然抱怨,因为他知道文档但不知道我尝试附加到文档的属性。
  • 您是否尝试过类似 (document as any).test 之类的东西?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 2017-11-27
  • 2016-04-14
  • 1970-01-01
相关资源
最近更新 更多