我有一个窗口界面的扩展,如下所示:

import IStuff from "Stuff/IStuff";

interface Window {
  Stuff: IStuff;
}

export default Window;

我想在另一个文件中使用stuff扩展名,方法是导入上面的文件,如下所示:
import Window from WindowExtension;

class StuffApp {

  public doStuff() {
    window.Stuff.doStuff();

  }

}

编译器在“窗口”中不存在“属性”属性,我做了什么错事?另外,从其他项目中使用这个扩展是非常重要的。
谢谢,伙计们!

最佳答案

以下代码不扩展全局窗口

import IStuff from "Stuff/IStuff";

interface Window {
  Stuff: IStuff;
}

export default Window;

它实际上导出了一个新的窗口接口,因为文件是一个模块(因为导入)。更多https://basarat.gitbooks.io/typescript/docs/project/modules.html
适当的修理
import IStuff from "Stuff/IStuff";



  interface MyWindow extends Window {
    Stuff: IStuff;
  }


export default (window as MyWindow)

然后使用
import MyWindow from WindowExtension;

class StuffApp {

  public doStuff() {
    MyWindow.Stuff.doStuff();

  }

}

08-17 03:16