协慌网

登录 贡献 社区

如何在 TypeScript 的 “window” 上显式设置新属性?

window上显式设置属性来为对象设置全局名称空间。

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

TypeScript 强调MyNamespace并抱怨:

属性 “MyNamespace” 在类型为 “window” 的值上不存在 “

MyNamespace声明为环境变量并删除window显式性来使代码正常工作,但我不想这样做。

declare var MyNamespace: any;

MyNamespace = MyNamespace || {};

如何window并使 TypeScript 满意?

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

答案

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

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

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

基本上,您需要扩展现有的window界面以向其介绍新属性。

要使其保持动态,只需使用:

(window as any).MyNamespace

使用 Svelte 还是 TSX?没有其他答案对我有用。

这是我所做的:

(window as any).MyNamespace