window
上显式设置属性来为对象设置全局名称空间。
window.MyNamespace = window.MyNamespace || {};
TypeScript 强调MyNamespace
并抱怨:
属性 “MyNamespace” 在类型为 “window” 的值上不存在 “
MyNamespace
声明为环境变量并删除window
显式性来使代码正常工作,但我不想这样做。
declare var MyNamespace: any;
MyNamespace = MyNamespace || {};
如何window
并使 TypeScript 满意?
作为附带说明,我发现 TypeScript 抱怨特别有趣,因为它告诉我window
是any
类型,而窗口肯定可以包含任何内容。
刚刚在另一个 StackOverflow 问题的答案中找到了答案。
declare global {
interface Window { MyNamespace: any; }
}
window.MyNamespace = window.MyNamespace || {};
基本上,您需要扩展现有的window
界面以向其介绍新属性。
要使其保持动态,只需使用:
(window as any).MyNamespace
使用 Svelte 还是 TSX?没有其他答案对我有用。
这是我所做的:
(window as any).MyNamespace