Утилитарные типы в TypeScript: Pick, Omit, Partial

Редактировать
Раздел: TypeScript

Утилитарные типы в TypeScript — это инструменты, которые позволяют модифицировать существующие типы для упрощения разработки и улучшения читаемости кода. Рассмотрим три наиболее часто используемых утилитарных типа: Pick, Omit и Partial.


1. Partial

Что делает `Partial`?

`Partial` превращает все свойства типа в необязательные.

Синтаксис

```typescript Partial ```

Пример использования

```typescript interface User { id: number; name: string; email: string; }

const updateUser = (user: Partial): void => { console.log("User updated:", user); };

updateUser({ name: "Alice" }); // Допустимо, так как все свойства стали необязательными

text

<h3 id="когда-использовать">Когда использовать?</h3>
- Когда нужно работать с частичными данными, например, при обновлении объектов.

---

<h2 id="2-pick">2. Pick</h2>

<h3 id="что-делает-pick">Что делает `Pick`?</h3>
`Pick` выбирает только указанные свойства из типа.

<h3 id="синтаксис">Синтаксис</h3>
```typescript
Pick<Type, Keys>

Пример использования

```typescript interface User { id: number; name: string; email: string; }

type UserPreview = Pick<User, "id" | "name">;

const user: UserPreview = { id: 1, name: "Alice", };

text

<h3 id="когда-использовать">Когда использовать?</h3>
- Когда нужно создать новый тип, содержащий только определённые свойства из исходного.

---

<h2 id="3-omit">3. Omit</h2>

<h3 id="что-делает-omit">Что делает `Omit`?</h3>
`Omit` удаляет указанные свойства из типа.

<h3 id="синтаксис">Синтаксис</h3>
```typescript
Omit<Type, Keys>

Пример использования

```typescript interface User { id: number; name: string; email: string; }

type UserWithoutEmail = Omit<User, "email">;

const user: UserWithoutEmail = { id: 1, name: "Alice", };

text

<h3 id="когда-использовать">Когда использовать?</h3>
- Когда нужно создать тип, исключив ненужные свойства из исходного.

---

<h2 id="сравнение-утилитарных-типов">Сравнение утилитарных типов</h2>

| Тип    | Описание                                              | Пример использования                       |
|--------|------------------------------------------------------|--------------------------------------------|
| `Partial` | Делает все свойства необязательными                    | Обновление данных частично                |
| `Pick`    | Выбирает только указанные свойства                     | Создание упрощённого представления объекта |
| `Omit`    | Исключает указанные свойства                          | Исключение лишних данных                  |

---

<h2 id="итоговые-вопросы-для-подготовки">Итоговые вопросы для подготовки</h2>

1. Как `Partial` преобразует типы?
2. Чем `Pick` отличается от `Omit`?
3. Когда лучше использовать `Omit`, а когда `Pick`?
4. Какие преимущества дают утилитарные типы при работе с объектами?
5. Можете ли вы привести пример использования всех трёх типов в одном проекте?

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