PassFront
  1. PassFront
  2. База знаний
  3. Utility Types

В чём разница между Omit, Exclude и Extract в TypeScript?

Utility Types

`Omit` работает с ключами объекта, а `Exclude` и `Extract` — с членами union-типа.

interface User { id: number; name: string; password: string }

type Public = Omit<User, 'password'>; // { id: number; name: string }

type Status = 'idle' | 'loading' | 'error' | 'success';
type Active = Exclude<Status, 'idle'>;          // 'loading' | 'error' | 'success'
type Failed = Extract<Status, 'error' | 'idle'>; // 'idle' | 'error'

Различия

  • Omit<T, K> убирает ключи K из объекта T.
  • Exclude<U, X> убирает из объединения U всё, что присваивается X.
  • Extract<U, X> оставляет только то, что присваивается X.

Когда что

Скрыть поле из публичной модели — Omit. Отфильтровать варианты union — Exclude и Extract. Связанный NonNullable<T> убирает null и undefined.

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

Omit убирает поля объекта, Exclude убирает варианты union, Extract оставляет их.

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