Создание типа, исключающего конкретное свойство

Нужный тип: Omit<TLibrary, 'meta'>. Он сохраняет books, count и genres с исходными типами, исключая поле meta из объявленной структуры.

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

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

Нужный тип: Omit<TLibrary, 'meta'>. Он сохраняет books, count и genres с исходными типами, исключая поле meta из объявленной структуры.

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

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

Условие

Требуется определить новый тип, который будет построен на основе уже существующего TLibrary, но без свойства meta.

type TLibrary = {
  books: TBook[],
  count: number,
  genres: string[],
  meta: TMeta
};

type TLibraryWithoutMeta = // ?

Ответ

Нужный тип: Omit<TLibrary, 'meta'>. Он сохраняет books, count и genres с исходными типами, исключая поле meta из объявленной структуры.

type TLibraryWithoutMeta = Omit<TLibrary, 'meta'>;
// Или через базовые операции:
type WithoutMeta = Pick<TLibrary, Exclude<keyof TLibrary, 'meta'>>;

Утилита работает только на уровне типов: существующий JavaScript-объект продолжит содержать meta. Для физического удаления при копировании используйте деструктуризацию const { meta, ...rest } = library. Структурная типизация также не делает Omit абсолютным запретом лишних runtime-полей.

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

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

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

Подробнее