我有一个窗口界面的扩展,如下所示:
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();
}
}