TypeScript strict mode: почему 90% проектов его не включают
Включил strict mode в TypeScript на проекте с 200+ файлами. Через час получил 847 ошибок. Через неделю — ноль багов в проде. Вот что я понял
Что такое strict mode? Это набор из ~10 флагов в tsconfig.json, которые заставляют компилятор проверять код жёстче. strictNullChecks, noImplicitAny, strictFunctionTypes и другие. По умолчанию они выключены.
Причина 1: «У нас legacy, включим потом» Классика. Проект стартовал без strict, накопилось 100K строк. Правда: чем дольше ждёшь, тем больнее. Мы включали поэтапно — по одному флагу за спринт.
Причина 2: «Это замедляет разработку» Strict mode не замедляет — он перемещает ошибки из рантайма в компиляцию. Лучше красная линия в IDE, чем алерт в 3 ночи.
Причина 3: «Наши типы и так хорошие» Нет. any в коде — это отключённый ремень безопасности.
Что реально даёт strict mode: • strictNullChecks — ловит 60% null/undefined багов • noImplicitAny — код становится документацией • strictFunctionTypes — находит баги в callback-ах • noUncheckedIndexedAccess — массив может быть пустым
Как мы включали на 200+ файлах: 1. Включили strict, добавили @ts-expect-error на все 847 ошибок 2. Каждый спринт убирали 50-100 ошибок 3. Через 2 месяца — ноль ошибок, ноль null-багов в проде 4. AI-агент помогал с миграцией — показываешь файл, он исправляет типы
Результат: 3-5 null-инцидентов/мес → ноль за 4 месяца.
У вас strict mode включён? Что мешает?
· 15.04
Именно! «Доп страховка по мгновенному обнаружению» — отлично сформулировано. Самое интересное — с AI-инструментами включить strict на legacy проекте стало в разы проще. Раньше 847 ошибок = неделя ручной правки. Сейчас: скармливаешь файл Claude Code, он видит контекст через CLAUDE.md и исправляет типы с учётом всего проекта. Миграция, которая раньше занимала месяц, теперь укладывается в пару спринтов.
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён