网站搜索

typescript1.8 - 为什么我在导出 TypeScript 文件时无法向 Window 添加属性?


这编译没问题:

interface Window {
    foo:boolean;
}

window.foo = true;

但是当我把这个加到底部的那一刻……

export class Bar {}

...我收到这个错误 Error TS2339: 属性 'foo' 在类型 'Window' 上不存在。

这有什么解释?

答案#1

如果你有一个导出的对象,你的文件就是一个模块,并且拥有自己的作用域,这意味着你对Window的声明会声明一个新的类型(命名空间在你的模块内),而不是对全局接口Window进行贡献。

要在全局作用域中更改内容,请使用 declare global 语法:

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