PassFront
  1. PassFront
  2. База знаний
  3. Антипатерны в TS

Какие плохие паттерны в TypeScript важны на практике и как их применять?

Антипатерны в TS

Плохие паттерны в TypeScript — это приёмы, которые формально компилируются, но лишают код пользы от типов.

Частые плохие паттерны

  • Типы «на всякий случай» через `any` — ошибки переезжают в рантайм.
  • Дублирование типов вместо вывода: тип ответа описан вручную в трёх местах. Лучше один источник и Pick, Omit, ReturnType, typeof.
  • Огромные интерфейсы с десятком необязательных полей вместо дискриминированного объединения:
// плохо
interface Response { data?: User; error?: string; loading?: boolean }
// лучше
type Response =
  | { status: 'loading' }
  | { status: 'ok'; data: User }
  | { status: 'error'; error: string };
  • Касты внешних данных без проверки (as User на ответ API).
  • Переусложнённые типы — рекурсивные условные типы там, где хватает простого интерфейса.
  • Отключение `strict` в конфиге проекта.

Как применять на практике

На ревью ищут any, as, ! и проверяют, что внешние данные валидируются на границе приложения.

Коротко для собеседования

Плохие паттерны — any, слепые касты, дублирование типов и «мешки» из необязательных полей; лучше выводить типы и использовать дискриминированные объединения.

Подробнее: TypeScript Handbook — Narrowing

Другие вопросы раздела