网站搜索

export - TypeScript 2.1 接口合并与 import 结合使用


我有一个用于 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' 上不存在;我哪里做错了?另外,能够从其他项目中以某种方式使用这个扩展非常重要。

谢谢你们,伙计们!

答案#1

以下代码不会扩展全局 window

import IStuff from "Stuff/IStuff";

interface Window {
  Stuff: IStuff;
}

export default Window;

它实际上会导出一个新窗口接口,因为该文件是一个模块(由于使用了 import)。更多信息请访问 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();

  }

}