Что такое Pick Type

Ответ

Pick — это утилитарный тип в TypeScript, который создаёт новый тип, выбирая только указанные свойства из существующего типа.

Синтаксис:

type Pick<T, K extends keyof T> = {
  [P in K]: T[P];
};

Пример:

interface User {
  id: number;
  name: string;
  age: number;
  email: string;
}

type UserPreview = Pick<User, 'id' | 'name'>;
// Результат: { id: number; name: string }

Используется, когда нужно создать тип с подмножеством свойств исходного типа. Особенно полезно для DTO, когда нужно передавать только часть данных.

Ответ 18+ 🔞

А, ну это ж Pick, блядь! Тип такой в TypeScript, который как хитрая жопа — выковыривает только то, что тебе надо из кучи всякого хлама.

Смотри, вот есть у тебя интерфейс, ну там User, с кучей полей: id, name, age, email... Овердохуища всего. А тебе, допустим, для превьюшки на фронте нужны только id да name. Ну не тащить же всю эту простыню, ёпта!

Вот тут-то наш Pick и выручает, как мудя. Берёт он исходный тип T и ключи K, которые обязательно должны быть в этом самом T (это вот K extends keyof T значит). И строит новый тип, где оставляет только выбранные тобой поля.

interface User {
  id: number;
  name: string;
  age: number;
  email: string;
}

type UserPreview = Pick<User, 'id' | 'name'>;
// Результат: { id: number; name: string }

Вот и всё, пидарас шерстяной! Получился UserPreview — лёгкий такой, стройный, без лишнего жира. Идеально для DTO, когда нужно отправить на клиент не всю сущность, а только кусочек, чтобы трафик не ебать.

Под капотом-то там магия простая:

type Pick<T, K extends keyof T> = {
  [P in K]: T[P]; // Берёт каждый ключ P из K и ставит ему тип такой же, как в оригинальном T[P]
};

В общем, вещь, блядь, полезная. Чихать на всё ненужное и выбирать только самое сокровенное. Как в жизни, внатуре.