/* Напишите тип MyRequired — делает все опциональные поля обязательными */

Тип MyRequiredT можно реализовать с помощью mapped types в TypeScript, убрав модификатор ? у всех свойств типа T. Это делается с помощью оператора -? перед ключом свойства:

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

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

Тип MyRequired<T> можно реализовать с помощью 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

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

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

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

Подробнее