TypeScriptを使っていると、「ちゃんとprivateとかreadonlyとか使って制約かけないとな〜」と認識し直すタイミングが定期的に来るんですが、
そんな折にJavaScript側で実現できるプライベートクラス機能なるものがあることを知りました。

プライベートクラス機能 - JavaScript | MDN

クラスのフィールドの先頭にハッシュ(#)をつけることで、プライベートなインスタンスフィールドを生成することができます。
あくまでコンパイル時にエラーの判定を行うTypeScriptと異なり、JavaScript自身の機能なのでランタイム時に判定&エラーを返してくれます。

継承を使う場合は、privateと同じく子クラスからは参照不可になりますが、
子クラス側で同じ名前のプライベートインスタンスフィールドを定義することはできます。


存在を知ってパッと概要を追って、良さそうと思ったけど世の反応(?)はどんな感じなんでしょうか。
(ちなみに、インスタンス生成時に少し遅くなるらしい、と言う旨の去年の記事はお見かけしました: JavaScriptでプライベートを使うと遅くなる話