Sobes.tech
Назад к вопросам
Middle+
9

/* Напишите тип MyReadonly - делает все поля только для чтения */ type User = { id: number name: string } type MyReadonly<T> = any const user: MyReadonly<User> = { id: 1, name: "John" } user.name = "Jane"

Компании, где спрашивали
М.Видео/эльдорадо

Ответ от нейросети

sobes.tech AI

Тип 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, что предотвращает их изменение после инициализации.