Тип MyReadonly<T> можно реализовать с помощью mapped types в TypeScript, добавив модификатор readonly ко всем полям типа T:
/* Напишите тип MyReadonly - делает все поля только для чтения */
Тип MyReadonlyT можно реализовать с помощью 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, что предотвращает их изменение после инициализации.