TypeScript 2.1 接口与 import from 合并

TypeScript 2.1 Interface Merging with import from

我有一个 Window 接口的扩展,如下所示:

import IStuff from "Stuff/IStuff";

interface Window {
  Stuff: IStuff;
}

export default Window;

我想通过像这样导入上面的文件在不同的文件中使用 Stuff 扩展:

import Window from WindowExtension;

class StuffApp {

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

  }

}

编译器失败并显示“属性 'Stuff' 在类型 'Window' 上不存在;我做错了什么?此外,能够使用此扩展非常重要以某种方式来自其他项目。

谢谢大家!

下面的代码不扩展全局window

import IStuff from "Stuff/IStuff";

interface Window {
  Stuff: IStuff;
}

export default Window;

它实际上导出了一个新的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();

  }

}