你如何在 TypeScript 的 `window` 上显式设置一个新属性? [英] How do you explicitly set a new property on `window` in TypeScript?
问题描述
我通过在 window
上显式设置属性来为我的对象设置全局命名空间.
window.MyNamespace = window.MyNamespace ||{};
TypeScript 在 MyNamespace
下划线并抱怨:
窗口"类型的值上不存在属性MyNamespace"任何"
我可以通过将 MyNamespace
声明为环境变量并删除 window
明确性来使代码工作,但我不想这样做.
声明 var MyNamespace: any;我的名字空间 = 我的名字空间 ||{};
我怎样才能让 window
保持在那里并使 TypeScript 开心?
作为旁注,我发现 TypeScript 抱怨特别有趣,因为它告诉我 window
是 any
类型,它绝对可以包含任何内容.
一>.
声明全局{interface Window { MyNamespace: any;}}window.MyNamespace = window.MyNamespace ||{};
基本上,您需要扩展现有的 window
接口来告诉它您的新属性.
I setup global namespaces for my objects by explicitly setting a property on window
.
window.MyNamespace = window.MyNamespace || {};
TypeScript underlines MyNamespace
and complains that:
The property 'MyNamespace' does not exist on value of type 'window' any"
I can make the code work by declaring MyNamespace
as an ambient variable and dropping the window
explicitness but I don't want to do that.
declare var MyNamespace: any;
MyNamespace = MyNamespace || {};
How can I keep window
in there and make TypeScript happy?
As a side note I find it especially funny that TypeScript complains since it tells me that window
is of type any
which by definitely can contain anything.
Just found the answer to this in another StackOverflow question's answer.
declare global {
interface Window { MyNamespace: any; }
}
window.MyNamespace = window.MyNamespace || {};
Basically you need to extend the existing window
interface to tell it about your new property.
这篇关于你如何在 TypeScript 的 `window` 上显式设置一个新属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!