PassFront
  1. PassFront
  2. База знаний
  3. Основы TypeScript

Объясни, будет ли TypeScript строгой проверкой типизации: от чего это зависит и почему.

Основы TypeScript

Насколько строго TypeScript проверяет код, зависит от настроек компилятора и от того, как написан код.

Настройки

"strict": true включает набор важных проверок:

  • strictNullChecks — null и undefined нужно обрабатывать явно;
  • noImplicitAny — нельзя оставить параметр без типа;
  • strictFunctionTypes, strictPropertyInitialization и другие.

Дополнительно полезны noUncheckedIndexedAccess (элемент массива может быть undefined) и exactOptionalPropertyTypes.

Что обходит проверки даже при strict

  • any и as — компилятор верит на слово;
  • ! — «здесь не null»;
  • неточные типы сторонних библиотек;
  • данные из внешнего мира (API, JSON.parse) — в рантайме типов нет.
const user = (await res.json()) as User; // TS не проверит реальный ответ

Итог

Даже со strict TypeScript не даёт абсолютных гарантий: он проверяет согласованность кода, а не реальные данные. Поэтому внешние данные валидируют (zod).

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

Строгость зависит от strict и других флагов и от дисциплины кода; any, as и внешние данные обходят проверки, поэтому на границах нужна валидация.

Подробнее: TypeScript — strict

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