Проверяет умение манипулировать типами объектов в TypeScript с помощью утилит Omit, Pick и Partial, что важно для безопасного переиспользования и адаптации типов.
TypeScript предоставляет набор встроенных утилит (utility types), которые позволяют создавать новые типы на основе существующих, не дублируя их описание. Это особенно полезно, когда нужно адаптировать один и тот же интерфейс под разные сценарии: например, для создания объекта, для обновления или для публичного API.
Рассмотрим пример. Есть интерфейс пользователя с паролем, который не должен попадать в публичный ответ API.
interface User {
id: number;
name: string;
email: string;
password: string;
}
// Убираем пароль
type PublicUser = Omit<User, 'password'>;
// Оставляем только id и name
type UserPreview = Pick<User, 'id' | 'name'>;
// Все поля необязательны (для PATCH-запроса)
type UserPatch = Partial<User>;
const u: PublicUser = { id: 1, name: 'Ann', email: 'a@b.c' };
const p: UserPreview = { id: 1, name: 'Ann' };
const patch: UserPatch = { name: 'Bob' };Утилиты можно комбинировать. Например, чтобы получить тип для обновления без id и пароля: Omit<Partial<User>, 'id' | 'password'>. Это даёт гибкость без ручного переписывания интерфейсов.
Важно понимать, что все эти преобразования существуют только на этапе компиляции. В скомпилированном JavaScript никаких Omit или Pick нет — они полностью стираются, оставляя только рантайм-логику.
Итог: используйте Omit и Pick, когда нужно переиспользовать существующий тип с изменённым набором полей, а Partial и Required — когда меняется обязательность свойств. Это уменьшает дублирование и снижает риск рассинхронизации типов.
Уровень
Рейтинг:
5
Сложность:
4
Навыки
JavaScript
TypeScript
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию