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

6.3. Utility Types

6.3.1. Partial

💡

Partial используется для создания нового типа данных на основе существующего типа, делая все его свойства необязательными

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

6.3.2. Required

💡

Required используется для создания нового типа данных на основе существующего типа, делая все его свойства обязательными

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

6.3.3. Omit

💡

Omit используется для создания нового типа данных на основе существующего типа, исключая определенные свойства из исходного типа

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

6.3.4. Pick

💡

Pick используется для создания нового типа данных на основе существующего типа, выбирая определенные свойства из исходного типа

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

6.3.5. Record

💡

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

  • Это полезно, когда вам нужно создать тип, который описывает структуру объекта с определенными ключами и типами значений.
  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>