如何在JavaScript/TypeScript混合项目中引用`window`变量
如何在JavaScript/TypeScript混合项目中引用`window`变量
我通过在window
上显式设置一个属性来为我的对象设置全局名称空间。
window.MyNamespace = window.MyNamespace || {};
TypeScript会强调 MyNamespace
,然后抱怨:
该类型 \"window any\" 的值上不存在 \'MyNamespace\' 属性
我可以通过将MyNamespace
声明为环境变量并且去掉window
的明确性来使代码工作,但我不想这么做。
declare var MyNamespace: any; MyNamespace = MyNamespace || {};
如何在保留window
的情况下使TypeScript快乐呢?
顺便说一下,我发现TypeScript抱怨实在有趣,因为它告诉我window
是任意(any)
类型,绝对可以包含任何值。
admin 更改状态以发布 2023年5月21日
我刚刚在另一个Stack Overflow问题的答案中找到了这个答案。
declare global { interface Window { MyNamespace: any; } } window.MyNamespace = window.MyNamespace || {};
基本上,您需要扩展现有的window
接口,以告诉它有关您的新属性。