intermediate

Narrowing и type guards

Control flow, type predicates, assertion functions, typeof, in, instanceof и custom validation.

Narrowing уточняет broad type через control flow. `typeof`, `instanceof`, `in`, equality checks, type predicates и assertion functions помогают compiler понять, что safe. Runtime validation всё ещё нужна на trust boundaries.

					function isUser(value: unknown): value is User {
  return typeof value === 'object' && value !== null &&
    'id' in value && typeof (value as User).id === 'string';
}
				

Начинайте external data с `unknown`, не с `any`. Нечестный type predicate может обмануть compiler. Проверка только `typeof value === 'object'` недостаточна для nested API payloads.

На интервью: объясняйте на конкретном примере и называйте, что проверяют в production code.

Типовые ошибки: путать похожие API и забывать edge cases в live coding.

Компромисс часто между ясностью и безопасностью или expressiveness и maintainability. Чеклист:

  • External data как unknown.
  • Честные predicates.
  • Валидация nested shapes.