Как объявить новый тип на основе Foo, но без полей a и c, не используя Omit?

Чтобы объявить новый тип на основе Foo, исключив поля a и c без использования Omit, можно воспользоваться пересечением с Pick и Exclude. Например, если Foo имеет поля a, b, c, d, то можно явно указать нужные поля:

Короткий ответ

Что ответить на собеседовании

Чтобы объявить новый тип на основе Foo, исключив поля a и c без использования Omit, можно воспользоваться пересечением с Pick и Exclude. Например, если Foo имеет поля a, b, c, d, то можно явно указать нужные поля:

Подробный разбор

Ответ с пояснениями

Чтобы объявить новый тип на основе Foo, исключив поля a и c без использования Omit, можно воспользоваться пересечением с Pick и Exclude. Например, если Foo имеет поля a, b, c, d, то можно явно указать нужные поля:

interface Foo {
  a: string;
  b: number;
  c: boolean;
  d: Date;
}

type WithoutAandC = Pick<Foo, Exclude<keyof Foo, 'a' | 'c'>>;

Здесь Exclude<keyof Foo, 'a' | 'c'> исключает ключи a и c из всех ключей Foo, а Pick выбирает оставшиеся поля. Таким образом, получается тип без полей a и c без прямого использования Omit.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее