Skip to content

TypeScriptのアクセス修飾子はコンパイル結果には出力されない

みなさん、アクセス修飾子って使ってますか?

ts
export class XXX {
    private hoo = "";  // 誰からも見えない
    protected bar = "" // 継承先からだけ見える
}

の、privateprotectedのことです。

僕はほとんど使ってなくて。ずっと__xxxみたいな紳士協定じみた命名で逃げていました。というのも、ECMA Scriptの # を使う方法でPrivateなメンバを追加すると、たいていの場合ちょっと遅くなってしまうのです。

しかし、最近確認したところ、なんとなんと……このアクセス修飾子はコンパイル結果は出力されません。そして型定義のみ変わる。
つまり、ほとんど僕が考えている理想の挙動をするのです。

ほかにも勘違いをしている方がおられるかもしれないので、備忘録として残しておきます。

Updated at: