提问者:小点点

如何在TypeScript中的`Window'上显式设置新属性?


我通过在window上显式设置属性来为对象设置全局命名空间。

window.MyNamespace = window.MyNamespace || {};

TypeScript在myNamespace下划线,并抱怨:

属性“myNamespace”不存在于类型为“window”的值中“any”

我可以通过将myNamespace声明为环境变量并删除window明确性来使代码工作,但我不想这样做。

declare var MyNamespace: any;

MyNamespace = MyNamespace || {};

我怎样才能保持window在那里,并让打字很开心呢?

作为附带说明,我觉得TypeScript抱怨特别有趣,因为它告诉我windowany类型,它肯定可以包含任何内容。


共1个答案

匿名用户

在另一个StackOverflow问题的答案中找到了答案。

declare global {
    interface Window { MyNamespace: any; }
}

window.MyNamespace = window.MyNamespace || {};

基本上,您需要扩展现有的window界面来告诉它您的新属性。