我知道暴露一个全局变量不是一个好习惯,但在我的情况下它是必要的。我在网页上还有另一个应用程序和我的角度应用程序,并且必须访问一个全局公开的变量。
我的问题是,如何在角度内部公开变量?
当我将其document
追加到document.test = "Hello";
时,TypeScript会引发错误Property 'test' does not exist on type 'Document'.
还有另一种方法吗?
答案 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';