Как стать автором
Обновить

Комментарии 5

"// работает
let readonlyPerson: ReadonlyPerson = writablePerson"

Как это сделать чтобы ридонли работал? что тут происходит? получается что объет копируется без сохранения структуры, а не ссылка на тип объекта?
Копируется ссылка на объект. «Ридонли» работает. Через новую ссылку не получится поменять свойства объекта, но получится прочитать.
написано же что рионли не работает

console.log(readonlyPerson.age) // 42
writablePerson.age++
console.log(readonlyPerson.age) // 43
console.log(readonlyPerson.age) // 42
writablePerson.age++
console.log(readonlyPerson.age) // 43

ReadonlyPerson — это просто ссылка с правами только на чтение. Почему создание ReadOnly ссылки должно отменять уже существующие ссылки на изменение?
У первого модуля были права изменять объект через интерфейс WritablePerson. Он передал в другой модуль ссылку на объект с параметром ReadonlyPerson объект. Другой модуль объект менять не будет (поэтому требует ссылку только через ReadonlyPerson). Первый по-прежнему может.

Либо `as const` либо `Object.freeze`

Зарегистрируйтесь на Хабре , чтобы оставить комментарий