我有一个 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’上不存在;我做错了什么?此外,能够以某种方式从其他项目使用此扩展非常重要。
谢谢大家!
最佳答案
下面的代码没有扩展全局窗口
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();
}
}
关于TypeScript 2.1 接口(interface)与 import from 合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42552754/