Нужный тип: 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-полей.