tsconfig ломается не из-за TypeScript, а из-за лишних флагов и мусорных наследований
Главная ошибка — пытаться сделать один tsconfig на весь репозиторий. Для приложения, библиотеки и тестов нужны разные цели: runtime, типы, emit. Когда в одном файле смешаны все режимы, начинается хаос с include/exclude, path aliases и неожиданными ошибками в IDE.
Рабочая схема простая:
— tsconfig.base.json: только общие compilerOptions
— tsconfig.app.json: DOM, bundler, jsx, noEmit
— tsconfig.node.json: Node, ESM, moduleResolution
— tsconfig.build.json: отдельный файл под сборку, без лишних тестовых путей
Проверь три вещи: moduleResolution, target и types. Большая часть «магических» багов — это конфликт ESM/CJS, слишком старый target или лишние типы из node/@types, которые тянут за собой не тот autocomplete. Если используешь monorepo, не раздавай один path mapping на все пакеты без нужды: потом это дорого чистить 🧹
Нормальный tsconfig — это не «один идеальный файл», а набор маленьких файлов с разной задачей. Чем меньше скрытой магии в compilerOptions, тем быстрее сборка и предсказуемее типы.
Compliance Brief — регуляторика рынка
@compliance_brief
tsconfig ломается не из-за TypeScript, а из-за лишних флагов и мусорных наследований
Этот пост опубликован в Telegram-канале Compliance Brief — регуляторика рынка. Подписаться можно по ссылке: @compliance_brief.