6.3. Utility Types
6.3.1. Partial
Partial (opens in a new tab) используется для создания нового типа данных на основе существующего типа, делая все его свойства необязательными
type User = {
name: string
age: number
isMarried: boolean
}
type Utility = Partial<User>
6.3.2. Required
Required (opens in a new tab) используется для создания нового типа данных на основе существующего типа, делая все его свойства обязательными
type User = {
name?: string
age?: number
isMarried?: boolean
}
type Utility = Required<User>
6.3.3. Omit
Omit (opens in a new tab) используется для создания нового типа данных на основе существующего типа, исключая определенные свойства из исходного типа
type User = {
name: string
age: number
isMarried: boolean
}
type Utility = Omit<User, 'name' | 'isMarried'>
6.3.4. Pick
Pick (opens in a new tab) используется для создания нового типа данных на основе существующего типа, выбирая определенные свойства из исходного типа
type User = {
name: string
age: number
isMarried: boolean
}
type Utility = Pick<User, 'name' | 'age'>
6.3.5. Record
Record (opens in a new tab) используется для создания нового типа данных, представляющего объект, где ключи (свойства) имеют определенный тип данных и ассоциированы с другим типом данных.
- Это полезно, когда вам нужно создать тип, который описывает структуру объекта с определенными ключами и типами значений.
- Синтаксис
Record
выглядит следующим образом
type MyRecord = Record<Keys, Values>;
- Keys - это тип для ключей (свойств) объекта.
- Values - это тип для значений, соответствующих ключам.
- Примеры использования
Record
// ❌
type TasksState = {
[key: string]: Task[]
}
// ✅
type TasksState2 = Record<string, Task[]>
Удобно использовать когда в качестве ключа используются перечисления
type Role = 'admin' | 'user' | 'guest';
interface UserInfo {
id: number;
name: string;
}
const users: Record<Role, UserInfo> = {
admin: { id: 1, name: 'Alice' },
user: { id: 2, name: 'Bob' },
guest: { id: 3, name: 'Charlie' }
};
Типизация объекта в котором свойства и значения могут быть любые
const Object = {
a1: 'a1',
b2: 2,
c9: true,
}
type Object = Record<string, unknown>
6.3.6. ReturnType
ReturnType (opens in a new tab) - это тип данных, который определяет тип значения, возвращаемого из функции или метода. Он указывает на тип данных, который функция вернет при выполнении.
function multiply(a: number, b: number) {
return a * b;
}
type Utility = ReturnType<typeof multiply>;
-
Оператор
typeof
типизирует функцию -
ReturnType
берет возвращаемое значение из типа выше
6.3.7. Parameters
Parameters (opens in a new tab) представляет собой встроенный тип, который извлекает типы параметров из типа функции. Этот тип позволяет работать с параметрами функции как с кортежем типов.
function multiply(a: number, b: number) {
return a * b;
}
type Utility = Parameters<typeof multiply>;
Parameters
возвращает массив параметров