Нет, это не сработает. 'type {new (): Window (); Окно-прототип; } нельзя назначить типу Window. '
вы пишете машинописным шрифтом и не используете модули, можно расширить глобальный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
интерфейс внутри кода модуля?