Комментарии 5
"// работает
let readonlyPerson: ReadonlyPerson = writablePerson"
Как это сделать чтобы ридонли работал? что тут происходит? получается что объет копируется без сохранения структуры, а не ссылка на тип объекта?
let readonlyPerson: ReadonlyPerson = writablePerson"
Как это сделать чтобы ридонли работал? что тут происходит? получается что объет копируется без сохранения структуры, а не ссылка на тип объекта?
0
Копируется ссылка на объект. «Ридонли» работает. Через новую ссылку не получится поменять свойства объекта, но получится прочитать.
0
написано же что рионли не работает
console.log(readonlyPerson.age) // 42
writablePerson.age++
console.log(readonlyPerson.age) // 43
console.log(readonlyPerson.age) // 42
writablePerson.age++
console.log(readonlyPerson.age) // 43
0
console.log(readonlyPerson.age) // 42
writablePerson.age++
console.log(readonlyPerson.age) // 43
ReadonlyPerson — это просто ссылка с правами только на чтение. Почему создание ReadOnly ссылки должно отменять уже существующие ссылки на изменение?
У первого модуля были права изменять объект через интерфейс WritablePerson. Он передал в другой модуль ссылку на объект с параметром ReadonlyPerson объект. Другой модуль объект менять не будет (поэтому требует ссылку только через ReadonlyPerson). Первый по-прежнему может.
0
Либо `as const` либо `Object.freeze`
0
Зарегистрируйтесь на Хабре , чтобы оставить комментарий
Карманная книга по TypeScript. Часть 5. Объектные типы