我通过在上显式设置属性来为对象设置全局名称空间window
。
window.MyNamespace = window.MyNamespace || {};
TypeScript强调MyNamespace
并抱怨:
属性“ MyNamespace”在类型为“ window”的值上不存在“
我可以通过声明MyNamespace
为环境变量并删除window
显式性来使代码正常工作,但我不想这样做。
declare var MyNamespace: any;
MyNamespace = MyNamespace || {};
我怎样才能window
留在那里并使TypeScript开心呢?
作为旁注,我发现TypeScript抱怨特别有趣,因为它告诉我window
类型any
肯定可以包含任何内容。
首先,您需要在当前范围内声明窗口对象。
因为 TypeScript想知道对象的类型。
由于窗口对象是在其他位置定义的,因此无法重新定义它。
但是您可以声明如下:
这不会重新定义window对象,也不会创建另一个具有name的变量
window
。这意味着窗口是在其他地方定义的,您只是在当前作用域中引用它。
然后,您可以通过以下方式简单地引用MyNamespace对象:
或者,您可以
window
通过以下方法简单地在对象上设置新属性:现在 TypeScript将不会抱怨。