## private宣言子を使うケース ### ES5以前をサポートする場合 Private Fieldsの実装には[[WeakMap (JavaScript)|WeakMap]]を使っており、 それは[[ES2015]]で実装されている。そのため、[[ES5]]以前の[[target (tsconfig)|target]]ではPrivate Fieldsを利用できない。 ### 非常にパフォーマンスがシビアな場合 private宣言子のプロパティに比べると[[WeakMap (JavaScript)|WeakMap]]を使っているためPrivate Fieldsの方がパフォーマンスは劣る。ただ、ランタイムによっては最適化もされるためそこまで気にしなくていいかもしれない。 ## Private Fieldsを使うケース ### ライブラリを作る場合 Private Fieldsには以下のメリットがあり、これはライブラリ開発者にとって非常に魅力的。 - 非公開想定の実装を変更した場合に起こる影響を気にしなくていい - 継承によって親クラスの挙動が変わる心配をしなくていい ## 参考 - [TypeScript: Documentation \- TypeScript 3\.8](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#ecmascript-private-fields)