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

Когда any допустим в TypeScript и чем его заменить?

Базовые типы

`any` допустим только как осознанная временная мера — там, где тип действительно нельзя или пока некогда описать.

Где any оправдан

  • Постепенная миграция с JavaScript — чтобы проект собрался, а типы добавлялись по частям.
  • Обход ошибки в чужих типах — локально и с комментарием.
  • Очень обобщённые утилиты, где тип выводится снаружи, а внутри без any не написать.

Чем заменить

  • `unknown` — для любых значений, которые нужно проверить перед использованием.
  • Дженерики — когда тип зависит от аргумента:
function first<T>(items: T[]): T | undefined {
  return items[0];
}
  • Конкретные типы и union — если варианты известны.
  • `Record<string, unknown>` — для произвольных объектов.
  • Валидация (zod) с выводом типа — для данных из API.

Как держать под контролем

Правило @typescript-eslint/no-explicit-any и strict в tsconfig подсвечивают каждый any.

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

any — временная мера при миграции или обходе чужих типов; обычно его заменяют на unknown, дженерики или конкретные типы.

Подробнее: typescript-eslint — no-explicit-any

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