Тип MyRequired<T> можно реализовать с помощью mapped types в TypeScript, убрав модификатор ? у всех свойств типа T. Это делается с помощью оператора -? перед ключом свойства:
/* Напишите тип MyRequired — делает все опциональные поля обязательными */
Тип MyRequiredT можно реализовать с помощью mapped types в TypeScript, убрав модификатор ? у всех свойств типа T. Это делается с помощью оператора -? перед ключом свойства:
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
/* Напишите тип MyRequired — делает все опциональные поля обязательными */
type User = { id?: number name?: string }
type MyRequired<T> = {
}
const user1: MyRequired<User> = { id: 1, name: "John" } const user2: MyRequired<User> = { id: 1 }
Ответ
Тип MyRequired<T> можно реализовать с помощью mapped types в TypeScript, убрав модификатор ? у всех свойств типа T. Это делается с помощью оператора -? перед ключом свойства:
// Убираем опциональность у всех свойств
type MyRequired<T> = {
[P in keyof T]-?: T[P]
}
// Пример использования
type User = {
id?: number
name?: string
}
const user1: MyRequired<User> = { id: 1, name: "John" } // корректно
const user2: MyRequired<User> = { id: 1 } // ошибка, отсутствует обязательное поле name