// Создать тип, который содержит те же поля, что и Delivery,

В TypeScript для преобразования всех полей объекта типа Delivery можно использовать утилитарные типы, например, PartialT, RequiredT, ReadonlyT, PickT, K, RecordK, T и другие.

Короткий ответ

Что ответить на собеседовании

В TypeScript для преобразования всех полей объекта типа Delivery можно использовать утилитарные типы, например, Partial<T>, Required<T>, Readonly<T>, Pick<T, K>, Record<K, T> и другие.

Подробный разбор

Ответ с пояснениями

Условие

// Создать тип, который содержит те же поля, что и Delivery, // но все поля которого являются опциональными (могут иметь значение undefined) и не могут изменить свои значения.

Ответ

В TypeScript для преобразования всех полей объекта типа Delivery можно использовать утилитарные типы, например, Partial<T>, Required<T>, Readonly<T>, Pick<T, K>, Record<K, T> и другие.

Если нужно преобразовать все поля объекта, например, сделать их все необязательными, можно использовать Partial:

type Delivery = {
  id: number;
  address: string;
  date: Date;
  delivered: boolean;
};

// Сделать все поля необязательными
type PartialDelivery = Partial<Delivery>;

Если нужно сделать все поля только для чтения:

// Сделать все поля только для чтения
type ReadonlyDelivery = Readonly<Delivery>;

Если нужно, например, преобразовать все поля в строки:

// Преобразовать все поля в строки
type StringifiedDelivery = {
  [K in keyof Delivery]: string;
};

Таким образом, используя mapped types и утилитарные типы, можно создавать новые типы на основе исходного Delivery.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее