Languages Frontend

TypeScript спас мой проект: строгая типизация на практике

Включить "strict": true в проекте с трёхлетней историей — всё равно что признаться коду во всех грехах сразу: 4 812 ошибок в первой же сборке.

Мы не стали геройствовать. План был такой: новые файлы пишем строго, старые чиним по касанию, а any помечаем комментарием-долгом с тикетом. Каждую неделю — час «типизационной пятницы».

type Result<T, E = Error> =
  | { ok: true;  value: T }
  | { ok: false; error: E };

async function loadOrder(id: string): Promise<Result<Order>> {
  // никаких исключений-сюрпризов для вызывающего кода
}

Отдельное удовольствие — discriminated unions для состояний UI. Когда «загрузка», «успех» и «ошибка» выражены типами, невозможно отрендерить спиннер с данными одновременно.

За восемь месяцев количество прод-багов, связанных с undefined и опечатками в полях, упало примерно вдвое. Типы — это тесты, которые пишутся сами, пока вы пишете код.

any — это кредит под очень высокий процент: берёшь минуту спокойствия сейчас, отдаёшь ночью в день релиза.

читайте также

Фронтенд-архитектура: от спагетти к фича-модулям

Комментарии 1

T
typelord26 июня 2026

«Типизационная пятница» — украду идею. У нас похожее называлось «час долгов», и туда никто не ходил, пока не начали показывать график закрытых any.

Оставить комментарий