いや継承は必要なくて、C++なら単にそのクラスのインスタンスを格納する変数や引数の型をconstにするだけで読み取り専用になるよ
TypeScriptもReadOnly<X>とするだけで簡単に読み取り専用のXの型を作れる