/* Напишите тип MyReadonly - делает все поля только для чтения */

Тип MyReadonlyT можно реализовать с помощью mapped types в TypeScript, добавив модификатор readonly ко всем полям типа T:

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

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

Тип MyReadonly<T> можно реализовать с помощью mapped types в TypeScript, добавив модификатор readonly ко всем полям типа T:

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

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

Условие

/* Напишите тип MyReadonly - делает все поля только для чтения */

type User = { id: number name: string }

type MyReadonly<T> = any

const user: MyReadonly<User> = { id: 1, name: "John" }

user.name = "Jane"

Ответ

Тип MyReadonly<T> можно реализовать с помощью mapped types в TypeScript, добавив модификатор readonly ко всем полям типа T:

// Делает все свойства типа T только для чтения
type MyReadonly<T> = {
  readonly [P in keyof T]: T[P]
}

// Пример использования

type User = {
  id: number
  name: string
}

const user: MyReadonly<User> = { id: 1, name: "John" }

// Ошибка: нельзя изменять readonly свойства
user.name = "Jane" // Ошибка компиляции

Таким образом, MyReadonly создает новый тип, где все поля исходного типа помечены как readonly, что предотвращает их изменение после инициализации.

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

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

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

Подробнее