Выбор ответа Senior tsconfig и декларации обновлено
declare global в файле без export
Вопрос
Файл global.d.ts содержит только этот код и даёт ошибку. Как исправить?
declare global {
interface Window {
ym?: (...args: unknown[]) => void;
}
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Добавить в файл export {}, чтобы он стал модулем. declare global разрешён только внутри модуля, а файл без import и export считается скриптом, где всё и так глобальное.
Варианты ответа
- Добавить в файл
export {}, чтобы он стал модулемправильный ответ - Заменить
interface Windowнаtype Windowс пересечением - Добавить
declareпередinterfaceвнутри блокаdeclare global - Переименовать файл в
global.ts, чтобы он попал в компиляцию
Разбор
declare global разрешён только внутри модуля, а файл без import и export считается скриптом, где всё и так глобальное. Пустой export {} превращает файл в модуль, и блок declare global начинает работать.
Другой рабочий вариант убрать обёртку declare global и оставить interface Window на верхнем уровне скрипта. Переименование в .ts не меняет правило. type не сливается с существующим Window. declare перед интерфейсом ничего не меняет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.