我通过显式设置属性为我的对象设置全局命名空间window。
window
window.MyNamespace = window.MyNamespace || {};
TypeScript 强调MyNamespace并抱怨:
MyNamespace
“窗口”类型的值上不存在属性“MyNamespace”任何“
MyNamespace我可以通过声明为环境变量并删除显式性来使代码工作,window但我不想这样做。
declare var MyNamespace: any; MyNamespace = MyNamespace || {};
我怎样才能window留在那里并让 TypeScript 开心呢?
作为旁注,我发现 TypeScript 抱怨特别有趣,因为它告诉我那window是any绝对可以包含任何东西的类型。
any
我刚刚在另一个 Stack Overflow question’s answer中找到了答案。
declare global { interface Window { MyNamespace: any; } } window.MyNamespace = window.MyNamespace || {};
基本上,您需要扩展现有window接口来告诉它您的新属性。