Изучение отображаемых типов TypeScript: подробное руководство

TypeScript — это мощный статически типизированный расширенный набор JavaScript, который предоставляет дополнительные функции для создания надежных и масштабируемых приложений. Одной из выдающихся особенностей TypeScript является поддержка отображаемых типов, которая позволяет разработчикам гибко и лаконично преобразовывать существующие типы и манипулировать ими. В этой статье мы углубимся в отображаемые типы TypeScript и рассмотрим различные методы на примерах кода, чтобы продемонстрировать их использование и универсальность.

  1. Partial
    Сопоставленный тип Partialпозволяет создать новый тип со всеми свойствами исходного типа, установленными как необязательные. Это особенно полезно, если вы хотите сделать определенные свойства необязательными, не указывая их явно.
interface User {
  name: string;
  age: number;
  email: string;
}
type PartialUser = Partial<User>;
const partialUser: PartialUser = {
  name: "John",
};
  1. Обязательный
    Сопоставленный тип 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,
};
  1. Только для чтения
    Сопоставленный тип 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.
  1. Выберите
    Сопоставленный тип Pickпозволяет создать новый тип, выбрав определенные свойства исходного типа.
interface Employee {
  id: number;
  name: string;
  department: string;
  salary: number;
}
type EmployeeInfo = Pick<Employee, "name" | "department">;
const employeeInfo: EmployeeInfo = {
  name: "Alice",
  department: "Engineering",
};
  1. 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,
};
  1. 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, каждый из которых снабжен примерами кода, иллюстрирующими их использование. Используя эти сопоставленные типы, разработчики могут оптимизировать процесс разработки, улучшить удобство сопровождения кода и выявить потенциальные ошибки во время компиляции.