Загрузка...
Загрузка...
Продолжая работу с платформой, вы принимаете условия Политики конфиденциальности и использование файлов cookie.
Omit — это utility тип в TypeScript, который позволяет исключить определённые свойства из уже существующего типа или интерфейса. Он создаёт новый тип, убирая из исходного списка полей те, которые вы указали.
Omit<T, K>
T — исходный тип (или интерфейс), из которого вы хотите исключить свойства.K — объединение (union) ключей, которые вы хотите убрать из T.Omit удаляет названные поля и оставляет всё остальное неизменным.
Предположим, у нас есть интерфейс User с несколькими полями:
interface User {
id: number;
name: string;
age: number;
isAdmin: boolean;
}
Если в некотором месте приложения мы хотим работать с пользователем, но не хотим иметь доступ к isAdmin, можно использовать Omit:
type PublicUserData = Omit<User, "isAdmin">;
const userData: PublicUserData = {
id: 1,
name: "Alice",
age: 25,
};
userData.isAdmin = true;
// ❌ Ошибка: свойство 'isAdmin' отсутствует в типе 'PublicUserData'
PublicUserData — содержит все поля User, за исключением isAdmin.isAdmin вызовет ошибку на этапе компиляции, так как в новом типе этого свойства нет.Часто после получения данных о пользователе из базы данных или внешнего API вы хотите передать во «фронтенд» объект без некоторых приватных полей:
interface User {
id: number;
name: string;
email: string;
passwordHash: string;
isAdmin: boolean;
}
type SafeUserData = Omit<User, "passwordHash" | "email">;
function getSafeUserData(user: User): SafeUserData {
const { passwordHash, email, ...rest } = user;
return rest;
}
const user: User = {
id: 42,
name: "Bob",
email: "bob@example.com",
passwordHash: "hashed_password",
isAdmin: false,
};
const safeData = getSafeUserData(user);
// safeData не содержит passwordHash и email
В итоге наружу передаются только id, name и isAdmin, а конфиденциальные данные остаются скрытыми.
password, token, isAdmin) для публичного представления данных.| Утилита | Описание |
|---|---|
Pick<T, K> | Оставляет только перечисленные свойства K из T |
Omit<T, K> | Исключает указанные свойства K из T, оставляя остальные |
passwordHash, token) из публичных данных.Pick даёт полный контроль над тем, какие данные используются в конкретном контексте.