Какие плохие паттерны в 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