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

Пользовательские типы

В этом руководстве мы используем пользовательские типы. Если вы новичок в пользовательских типах, ознакомьтесь с моим руководством по пользовательским типам здесь.

Тип утилиты выбора TypeScript

TypeScript имеет ряд служебных типов, которые по сути являются пользовательскими типами, решающими конкретную проблему. Проблема, которую решает Pick, заключается в том, что у нас есть уже существующий тип и мы хотим создать новый тип, используя только пару полей из этого типа. Например, предположим, что у нас есть тип User, который выглядит так:

type User = {
    firstName: string,
    lastName: string,
    age: number
}

В другой части кода мы хотим сослаться на пользователя, но знаем, что данные содержат только имя и фамилию. Таким образом, мы не можем использовать тип User, так как все поля обязательны. Если мы хотим создать новый тип на основе User, мы можем использовать Pick.

Pick имеет два аргумента, первый — Type, тип, который мы хотим использовать, а второй — тип объединения или список полей, которые мы хотим выбрать из используемого нами типа. Пишем так: Type<User, "fields" | "to" | "include">. Например, давайте создадим новый тип, который имеет только firstName и lastName:

type User = {
    firstName: string,
    lastName: string,
    age: number
}
type UserName = Pick<User, "firstName" | "lastName">

Теперь, используя наш новый тип UserName, мы можем определить переменную, состоящую только из firstName и lastName:

let user:UserName = {
    firstName: "John",
    lastName: "Doe"
}

Если бы мы хотели создать новый тип, содержащий только возраст пользователя, мы могли бы также использовать Pick. Вот пример:

type User = {
    firstName: string,
    lastName: string,
    age: number
}
type UserAge = Pick<User, "age">
let age:UserAge = {
    age: 1534
}

Как видите, тип Pick очень полезен при создании пользовательских типов на основе уже существующих. Теперь, когда вы освоили его, вы можете упростить объявления типов.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Присоединяйтесь к нашему сообществу Discord.