TypeScript strict mode: миграция большого проекта без боли
Включить strict: true в legacy-проекте на 200 тысяч строк — это не коммит, это проект. Рассказываю проверенную стратегию: как включить strict-mode так, чтобы код продолжал собираться каждый день, а команда не взбунтовалась.
Главный инструмент — постепенность. TypeScript умеет применять опции по файлам через директивы @ts-strict-ignore, а в больших репозиториях удобнее держать две фазы сборки: strict-проверка только для новых директорий и мягкий режим для остального.
Порядок флагов
noImplicitAny— самый болезненный, начните с негоstrictNullChecks— второй по сложности, даёт больше всего пользыnoUncheckedIndexedAccess— страховка от undefined в массивахexactOptionalPropertyTypes— только если готовы к рефакторингу типов
И финальный совет: заведите метрику. Считайте количество ошибок strict-проверки в CI и рисуйте график. Когда команда видит, что кривая идёт вниз, миграция превращается из наказания в игру.