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();
}
}
