6. Typescript
6.3. Утилитные типы

6.3. Utility Types

6.3.1. Partial

Partial (opens in a new tab) используется для создания нового типа данных на основе существующего типа, делая все его свойства необязательными

partial.ts
type User = {
  name: string
  age: number
  isMarried: boolean
}
 
type Utility = Partial<User>

partial

6.3.2. Required

Required (opens in a new tab) используется для создания нового типа данных на основе существующего типа, делая все его свойства обязательными

required.ts
type User = {
  name?: string
  age?: number
  isMarried?: boolean
}
 
type Utility = Required<User>

required

6.3.3. Omit

Omit (opens in a new tab) используется для создания нового типа данных на основе существующего типа, исключая определенные свойства из исходного типа

omit.ts
type User = {
  name: string
  age: number
  isMarried: boolean
}
 
type Utility = Omit<User, 'name' | 'isMarried'>

omit

6.3.4. Pick

Pick (opens in a new tab) используется для создания нового типа данных на основе существующего типа, выбирая определенные свойства из исходного типа

pick.ts
type User = {
  name: string
  age: number
  isMarried: boolean
}
 
type Utility = Pick<User, 'name' | 'age'>

pick

6.3.5. Record

Record (opens in a new tab) используется для создания нового типа данных, представляющего объект, где ключи (свойства) имеют определенный тип данных и ассоциированы с другим типом данных.

  • Это полезно, когда вам нужно создать тип, который описывает структуру объекта с определенными ключами и типами значений.
  1. Синтаксис Record выглядит следующим образом
record.ts
type MyRecord = Record<Keys, Values>;
 
- Keys - это тип для ключей (свойств) объекта.
- Values - это тип для значений, соответствующих ключам.
  1. Примеры использования Record
record.ts
// ❌
type TasksState = {
  [key: string]: Task[]
}
 
// ✅
type TasksState2 = Record<string, Task[]>
 
// Как типизировать объект в котором свойства и значения могут быть любые ?
 
const Object = {
  a1: 'a1',
  b2: 2,
  c9: true,
}
 
type Object = Record<string, unknown>

6.3.6. ReturnType

ReturnType (opens in a new tab) - это тип данных, который определяет тип значения, возвращаемого из функции или метода. Он указывает на тип данных, который функция вернет при выполнении.

ReturnType.ts
function multiply(a: number, b: number) {
    return a * b;
}
 
type Utility = ReturnType<typeof multiply>;
  1. Оператор typeof типизирует функцию typeof

  2. ReturnType берет возвращаемое значение из типа выше returnType

6.3.7. Parameters

Parameters (opens in a new tab) представляет собой встроенный тип, который извлекает типы параметров из типа функции. Этот тип позволяет работать с параметрами функции как с кортежем типов.

Parameters.ts
function multiply(a: number, b: number) {
    return a * b;
}
 
type Utility = Parameters<typeof multiply>;

Parameters возвращает массив параметров

Parameters