Extender "Ventana" dentro de un módulo mecanografiado
Si está escribiendo en mecanografiado y no está utilizando módulos, es posible extender elWindow
objeto. Por ejemplo, esto compila:
interface Window {
myCounter: number;
}
window.myCounter = window.myCounter || 0;
++window.myCounter;
function outputLoadingDetails() {
console.log(`myCounter= ${window.myCounter}`)
}
Pero si prefijo la funciónoutputLoadingDetails
conexport
, parece que estoy convirtiendo este archivo en un módulo. Ahora obtengo un error de compilación cuando accedowindow.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`
}
Parece que mi declaración de interfaz ya no está extendiendo el globalWindow
tipo.
Una solución alternativa que he encontrado es poner la declaración de la interfaz en un*.d.ts
y haga referencia a esto desde mi módulo.
Pero ahora tengo curiosidad. ¿Hay alguna manera de extender elWindow
interfaz dentro del código del módulo?