TypeScript — это мощный статически типизированный расширенный набор JavaScript, который предоставляет дополнительные функции для создания надежных и масштабируемых приложений. Одной из выдающихся особенностей TypeScript является поддержка отображаемых типов, которая позволяет разработчикам гибко и лаконично преобразовывать существующие типы и манипулировать ими. В этой статье мы углубимся в отображаемые типы TypeScript и рассмотрим различные методы на примерах кода, чтобы продемонстрировать их использование и универсальность.
- Partial
Сопоставленный типPartialпозволяет создать новый тип со всеми свойствами исходного типа, установленными как необязательные. Это особенно полезно, если вы хотите сделать определенные свойства необязательными, не указывая их явно.
interface User {
name: string;
age: number;
email: string;
}
type PartialUser = Partial<User>;
const partialUser: PartialUser = {
name: "John",
};
- Обязательный
Сопоставленный типRequiredсоздает новый тип со всеми необходимыми свойствами исходного типа. Это удобно, если вы хотите обеспечить наличие всех свойств.
interface Book {
title?: string;
author?: string;
pageCount?: number;
}
type RequiredBook = Required<Book>;
const requiredBook: RequiredBook = {
title: "The Great Gatsby",
author: "F. Scott Fitzgerald",
pageCount: 218,
};
- Только для чтения
Сопоставленный типReadonlyсоздает новый тип, все свойства исходного типа которого установлены как доступные только для чтения, что предотвращает любые изменения.
interface Config {
apiUrl: string;
apiKey: string;
}
type ReadonlyConfig = Readonly<Config>;
const readonlyConfig: ReadonlyConfig = {
apiUrl: "https://api.example.com",
apiKey: "abc123",
};
readonlyConfig.apiUrl = "https://new-api.example.com"; // Error: Cannot assign to 'apiUrl' because it is a read-only property.
- Выберите
Сопоставленный типPickпозволяет создать новый тип, выбрав определенные свойства исходного типа.
interface Employee {
id: number;
name: string;
department: string;
salary: number;
}
type EmployeeInfo = Pick<Employee, "name" | "department">;
const employeeInfo: EmployeeInfo = {
name: "Alice",
department: "Engineering",
};
- Omit
Сопоставленный типOmitсоздает новый тип, исключая определенные свойства из исходного типа.
interface Car {
make: string;
model: string;
year: number;
color: string;
}
type CarDetails = Omit<Car, "color">;
const carDetails: CarDetails = {
make: "Toyota",
model: "Camry",
year: 2022,
};
- Record
Сопоставленный типRecordсоздает новый тип со свойствами, заданными параметромKeys, все типаType.
type Fruit = "apple" | "banana" | "orange";
type FruitInventory = Record<Fruit, number>;
const fruitInventory: FruitInventory = {
apple: 10,
banana: 5,
orange: 8,
};
Сопоставленные типы TypeScript предоставляют мощный набор инструментов для преобразования типов и управления ими, позволяя разработчикам создавать более выразительный код и повышать безопасность типов. В этой статье мы рассмотрели несколько методов, в том числе Partial, Required, Readonly, Pick, Omitи Record, каждый из которых снабжен примерами кода, иллюстрирующими их использование. Используя эти сопоставленные типы, разработчики могут оптимизировать процесс разработки, улучшить удобство сопровождения кода и выявить потенциальные ошибки во время компиляции.