小编典典

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

all

我通过显式设置属性为我的对象设置全局命名空间window

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

TypeScript 强调MyNamespace并抱怨:

“窗口”类型的值上不存在属性“MyNamespace”任何“

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

declare var MyNamespace: any;

MyNamespace = MyNamespace || {};

我怎样才能window留在那里并让 TypeScript 开心呢?

作为旁注,我发现 TypeScript 抱怨特别有趣,因为它告诉我那windowany绝对可以包含任何东西的类型。


阅读 231

收藏
2022-02-28

共1个答案

小编典典

我刚刚在另一个 Stack Overflow question’s
answer
中找到了答案。

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

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

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

2022-02-28