TypeScript Omit: методы исключения свойств из типов

В TypeScript тип утилиты Omitиспользуется для создания нового типа путем исключения определенных свойств из существующего типа. Он позволяет исключить определенные свойства из типа объекта и создать новый тип без этих свойств. Вот несколько способов добиться этого:

Метод 1: использование типа утилиты Omit

type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;

Этот метод использует встроенные служебные типы Pickи Excludeдля создания нового типа путем выбора всех свойств из T, кроме K.

Пример использования:

interface Person {
  name: string;
  age: number;
  email: string;
}
type PersonWithoutEmail = Omit<Person, 'email'>;
// Resulting type: { name: string; age: number; }

Метод 2. Использование сопоставленных типов

type Omit<T, K extends keyof T> = {
  [P in Exclude<keyof T, K>]: T[P];
};

Этот метод использует сопоставленные типы для перебора свойств Tи включает только те свойства, которые не указаны в K.

Пример использования:

interface Person {
  name: string;
  age: number;
  email: string;
}
type PersonWithoutEmail = Omit<Person, 'email'>;
// Resulting type: { name: string; age: number; }