【发布时间】:2018-04-18 05:31:18
【问题描述】:
如果您使用 typescript 编写并且不使用模块,则可以扩展全局 Window 对象。例如,这样编译:
interface Window {
myCounter: number;
}
window.myCounter = window.myCounter || 0;
++window.myCounter;
function outputLoadingDetails() {
console.log(`myCounter= ${window.myCounter}`)
}
但如果我在函数outputLoadingDetails 前加上export,我似乎正在将此文件转换为模块。现在,当我访问 window.myCounter 时出现编译器错误。
interface Window {
myCounter: number;
}
window.myCounter = window.myCounter || 0; // ERROR: property 'MyCounter' does not exist on type `Window`
++window.myCounter; // ERROR: property 'MyCounter' does not exist on type `Window`
export function outputLoadingDetails() {
console.log(`myCounter= ${window.myCounter}`) // ERROR: property 'MyCounter' does not exist on type `Window`
}
看来我的接口声明不再扩展全局 Window 类型。
我发现的一种解决方法是将接口声明放入单独的*.d.ts 文件中,并从我的模块中引用它。
但现在我很好奇。有什么方法可以在模块代码中扩展Window 接口吗?
【问题讨论】:
-
如何在解决方法中引用模块中的 d.ts 文件?
标签: typescript typescript-typings