Когда вы создаете отдельную функцию для присвоения значения, эту отдельную функцию можно использовать где-то еще, кроме единственного конструктора.Компилятор не будет проверять (а для публичной функции даже не сможет проверить), что функция вызывается только из конструктора.Так что ошибка.
У вас есть 2 обходных пути для назначения значения в любом случае.Более чистым было бы поместить ядро вашей отдельной функции в конструктор.Другой, который заставит вас потерять проверку типов и поэтому не рекомендуется , если вы действительно не знаете, что делаете, будет конвертировать this
в any
:
(this as any).readOnlyProperty = raw