以角度

时间:2018-03-06 06:08:22

标签: angular typescript global-variables

我知道暴露一个全局变量不是一个好习惯,但在我的情况下它是必要的。我在网页上还有另一个应用程序和我的角度应用程序,并且必须访问一个全局公开的变量。

我的问题是,如何在角度内部公开变量? 当我将其document追加到document.test = "Hello";时,TypeScript会引发错误Property 'test' does not exist on type 'Document'.

还有另一种方法吗?

1 个答案:

答案 0 :(得分: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';