Загрузка...
Загрузка...
Продолжая работу с платформой, вы принимаете условия Политики конфиденциальности и использование файлов cookie.
👋 Привет! Я Дастан, автор Hack Frontend. Всегда рад профессиональному нетворкингу => добавляйся в LinkedIn.
Pick — это utility тип в TypeScript, который позволяет «выбрать» конкретные свойства из существующего типа или интерфейса. Он создаёт новый тип, включающий лишь те поля, которые вы явно указали.
Pick<T, K>
T - исходный тип или интерфейс, из которого нужно выбрать свойства.K — объединение (union) ключей, которые вы хотите оставить в результирующем типе.Pick берёт только перечисленные свойства K из T, а все остальные игнорирует.
Допустим, у нас есть интерфейс User с несколькими полями:
interface User {
id: number;
name: string;
age: number;
isAdmin: boolean;
}
Если нам нужен тип, в котором мы хотим хранить только id и name, мы можем воспользоваться Pick:
type BasicUserInfo = Pick<User, "id" | "name">;
const userInfo: BasicUserInfo = {
id: 1,
name: "Alice",
};
userInfo.age = 25;
// Ошибка: свойство 'age' отсутствует в типе 'Pick<User, "id" | "name">'
BasicUserInfo содержит только поля id и name.age или isAdmin приведёт к ошибке на этапе компиляции, так как их нет в результирующем типе.При получении данных о пользователе из API иногда хочется вернуть наружу только минимальный набор полей, не раскрывая всего внутреннего устройства объекта. Например:
interface User {
id: number;
name: string;
email: string;
passwordHash: string;
isAdmin: boolean;
}
// Создадим публичный профиль (только безопасная часть данных)
type PublicUserProfile = Pick<User, "id" | "name">;
function getPublicProfile(user: User): PublicUserProfile {
return {
id: user.id,
name: user.name,
};
}
Таким образом, функция getPublicProfile возвращает только те поля id и name, которые мы явно указали в PublicUserProfile.
Pick позволяет избежать дублирования кода при определении типов, повторно используя существующие структуры.| Утилита | Описание |
|---|---|
Pick<T, K> | Оставляет только указанные свойства K из T |
Omit<T, K> | Исключает указанные свойства K из T, оставляя остальные |
Pick помогает формировать подтипы, оставляя только нужные свойства.Omit и другими утилитами делает код гибче и безопаснее.