为什么我不能将属性附加到导出的 TypeScript 文件中的 Window?

Why can't I attach properties to Window in TypeScript files that export?

编译正常:

interface Window {
    foo:boolean;
}

window.foo = true;

但是当我把它添加到底部时...

export class Bar {}

...我收到此错误 Error TS2339: Property 'foo' does not exist on type 'Window'.

这是什么解释?

如果你有一个导出的对象,你的文件是一个 module 并且有它自己的范围,这意味着你的 Window 声明声明了一个新类型(内部命名空间你的模块)而不是贡献给全局接口 Window.

要在全局范围内更改内容,请使用 declare global 语法:

declare global {
  interface Window {
    foo:boolean;
  }
}