Шпаргалка по Utility-типам в TypeScript

  —  2 минуты

#theory#useful#typescript
Читать статью в Telegram

В этой статье разберу только самые часто используемые, посмотреть все utility-типы можно в официальной документации.

typescript
1type Person = {
2    name: string;
3    surname: string;
4    age: number
5}
6

Partial<T> Делает все ключи необязательными

typescript
1type PartialPerson = Partial<Person>
2
3// то же самое, что 
4type PartialPerson = {
5    name?: string;
6    surname?: string;
7    age?: number
8}
9

Required<T> Обратное действие Partial — делает все ключи обязательными

typescript
1Required<Partial<Person>> === Person
2

Readonly<Type> Запрещает изменять поля объекта

typescript
1const person: Readonly<Person> = {
2    name: "Denis",
3    surname: "Putnov",
4    age: 22
5}
6
7// ошибка, так как 
8// person нельзя изменять,
9// только считывать (readonly)
10person.name = 'Денис'
11

Record<Keys, Values> Создаёт тип из ключей и значений, указанных отдельно

typescript
1// ключи могут быть только строкой
2// значения - только числом
3type WordCounter = Record<string, number>
4
5type Status = 'success' | 'error'
6type StatusCounter = Record<Status, number>
7
8// то же самое, что и Record ранее
9type StatusCounter = {
10    success: number
11    error: number
12}
13

Pick<Type, Keys> Выбирает только нужные ключи из типа и возвращает новый тип

typescript
1// из типа Person выбираем только свойства
2// name и surname
3type PersonName = Pick<Person, 'name' | 'surname'>
4
5// то же самое
6type PersonName = {
7    name: string
8    surname: string
9}
10

Omit<Type, Keys> Удаляет ненужные свойства из типа и возвращает новый тип

typescript
1// Из типа Person исключаем свойство 'age'
2type PersonName = Omit<Person, 'age'>;
3
4// то же самое
5type PersonName = {
6    name: string
7    surname: string
8}
9

Parameters<Function> Возвращает тип параметров функции

typescript
1type Foo = (a: number, b: number) => string
2type Params = Parameters<Foo>
3
4Params // [a: number, b: number]
5

ReturnType<Function> Возвращает тип возвращаемого параметра из функции

typescript
1type Foo = (a: number, b: number) => string
2type Return = ReturnType<Foo>
3
4Return // string
5

Статья была полезной?