TypeScript — это строго типизированная расширенная версия JavaScript, предоставляющая возможности статической типизации для повышения качества и удобства сопровождения кода. Одной из мощных возможностей TypeScript являются сопоставленные типы объектов, которые позволяют гибко и выразительно преобразовывать свойства типа объекта и манипулировать ими. В этой статье мы углубимся в типы отображаемых объектов в TypeScript, изучая различные методы и приемы на примерах кода.
- Сопоставление свойств.
Сопоставленные типы объектов позволяют применять преобразования к каждому свойству типа объекта. В следующем фрагменте кода показано, как добавить модификатор «только для чтения» ко всем свойствам заданного типа:
type Readonly<T> = {
readonly [P in keyof T]: T[P];
};
- Дополнительные свойства.
Вы можете создать дополнительную версию типа объекта, используя сопоставленные типы объектов. В следующем примере показано, как сделать все свойства данного типа необязательными:
type Partial<T> = {
[P in keyof T]?: T[P];
};
- Обязательные свойства.
И наоборот, вы можете сделать все свойства типа объекта обязательными, используя сопоставленные типы объектов. Фрагмент кода ниже демонстрирует это:
type Required<T> = {
[P in keyof T]-?: T[P];
};
- Выбор свойств.
Сопоставленные типы объектов также позволяют выбирать подмножество свойств из существующего типа объекта. В следующем примере показано, как создать новый тип только с выбранными свойствами:
type Pick<T, K extends keyof T> = {
[P in K]: T[P];
};
- Исключить свойства.
Вы можете исключить определенные свойства из типа объекта, используя сопоставленные типы объектов. Фрагмент кода ниже демонстрирует, как создать новый тип без указанных свойств:
type Exclude<T, U> = {
[P in Exclude<keyof T, keyof U>]: T[P];
};
- Преобразование типов свойств.
Сопоставленные типы объектов также позволяют преобразовывать типы свойств объектов. В следующем примере все свойства заданного типа преобразуются в строку:
type ToString<T> = {
[P in keyof T]: string;
};
Сопоставленные типы объектов в TypeScript предоставляют гибкий и мощный способ преобразования типов объектов и управления ими. Используя эти методы, вы можете создавать более выразительный и многократно используемый код. В этой статье были рассмотрены некоторые из наиболее часто используемых методов с примерами кода, включая сопоставление свойств, создание необязательных и обязательных свойств, выбор и исключение свойств, а также преобразование типов свойств. Овладев этими приемами, вы сможете раскрыть весь потенциал системы типов TypeScript.