Je sais que cela est une discussion plus, mais il pourrait encore être utile de partager ma solution au problème des variables et des méthodes soi-disant privées dans un tapuscrit « fuite » dans l'interface publique de la classe JavaScript compilé.
Pour moi , cette question est purement cosmétique, à savoir qu'il est tout au sujet de l'encombrement visuel quand une variable d'instance est considérée dans DevTools. Mon correctif est aux déclarations privées de regrouper dans une autre classe qui est ensuite instancié dans la classe principale et affecté à un private(mais toujours visible publiquement dans JS) variable avec un nom comme __( un double underscore).
Exemple:
class Privates {
readonly DEFAULT_MULTIPLIER = 2;
foo: number;
bar: number;
someMethod = (multiplier: number = this.DEFAULT_MULTIPLIER) => {
return multiplier * (this.foo + this.bar);
}
private _class: MyClass;
constructor(_class: MyClass) {
this._class = _class;
}
}
export class MyClass {
private __: Privates = new Privates(this);
constructor(foo: number, bar: number, baz: number) {
// assign private property values...
this.__.foo = foo;
this.__.bar = bar;
// assign public property values...
this.baz = baz;
}
baz: number;
print = () => {
console.log(`foo=${this.__.foo}, bar=${this.__.bar}`);
console.log(`someMethod returns ${this.__.someMethod()}`);
}
}
let myClass = new MyClass(1, 2, 3);
Lorsque l' myClassinstance est considérée dans DevTools, au lieu de voir tous ses membres entremêlés avec les publics véritablement « privés » (qui peut obtenir visuellement très salissante correctement refondus Code de la vie réelle) vous les voyez clairement groupés dans la affaissée __propriété:
