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

Какие конструкции не нужно использовать в TypeScript?

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

В TypeScript есть конструкции, которые отключают проверки или вводят в заблуждение — их стоит избегать.

Что не использовать без крайней необходимости

  • `any` — выключает проверку типов. Вместо него — unknown и сужение.
  • `as` для «убеждения» компилятора — data as User ничего не проверяет в рантайме. Лучше валидировать данные (zod, type guard).
  • Non-null `!` — user!.name обещает, что значения нет null, без проверки.
  • `@ts-ignore` — молча прячет ошибку. Если без подавления не обойтись — @ts-expect-error с комментарием.
  • `Function` и `Object` как типы — слишком широкие; описывайте сигнатуру.
  • Пустые интерфейсы и `{}` — {} значит «любое не-null значение», а не «пустой объект».
  • Обычные `enum` там, где хватает union литералов, — enum генерирует код в рантайме.
  • `namespace` в новом коде — вместо него ES-модули.
// плохо
const user = JSON.parse(raw) as User;
// лучше
const user = UserSchema.parse(JSON.parse(raw));

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

Избегают any, слепых as и !, @ts-ignore, широких типов Function/{} и лишних enum/namespace — они отключают проверки или усложняют код.

Подробнее: TypeScript — Do's and Don'ts

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