Выбор ответа Senior tsconfig и декларации обновлено
Что запрещает isolatedModules
Вопрос
Какой код не скомпилируется с isolatedModules: true, если User это интерфейс?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: export { User } from './types'. esbuild, SWC и Babel транспилируют каждый файл отдельно и не знают, что User это тип.
Варианты ответа
import type { User } from './types'export { User } from './types'правильный ответexport type { User } from './types'enum Role { Admin, User }
Разбор
esbuild, SWC и Babel транспилируют каждый файл отдельно и не знают, что User это тип. Встретив export { User } from './types', они оставят реэкспорт, а в JS такого значения нет. Поэтому isolatedModules требует явный export type.
import type и export type как раз решают эту проблему. Обычный enum компилируется пофайлово и разрешён. Запрещено обращаться к declare const enum из других файлов, но это другой случай.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.