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();
}
}
我有一个 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();
}
}