TypeScriptを使っていると、「ちゃんとprivateとかreadonlyとか使って制約かけないとな〜」と認識し直すタイミングが定期的に来るんですが、
そんな折にJavaScript側で実現できるプライベートクラス機能なるものがあることを知りました。
プライベートクラス機能 - JavaScript | MDN
クラスのフィールドの先頭にハッシュ(#
)をつけることで、プライベートなインスタンスフィールドを生成することができます。
あくまでコンパイル時にエラーの判定を行うTypeScriptと異なり、JavaScript自身の機能なのでランタイム時に判定&エラーを返してくれます。
継承を使う場合は、privateと同じく子クラスからは参照不可になりますが、
子クラス側で同じ名前のプライベートインスタンスフィールドを定義することはできます。
存在を知ってパッと概要を追って、良さそうと思ったけど世の反応(?)はどんな感じなんでしょうか。
(ちなみに、インスタンス生成時に少し遅くなるらしい、と言う旨の去年の記事はお見かけしました: JavaScriptでプライベートを使うと遅くなる話)