В TypeScript для преобразования всех полей объекта типа Delivery можно использовать утилитарные типы, например, Partial<T>, Required<T>, Readonly<T>, Pick<T, K>, Record<K, T> и другие.
// Создать тип, который содержит те же поля, что и Delivery,
В TypeScript для преобразования всех полей объекта типа Delivery можно использовать утилитарные типы, например, PartialT, RequiredT, ReadonlyT, PickT, K, RecordK, 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.