Αντιλαμβάνομαι αυτό είναι μια παλαιότερη συζήτηση, αλλά θα μπορούσε ακόμα να είναι χρήσιμο να μοιραστώ λύση μου για το πρόβλημα των δήθεν ιδιωτικές μεταβλητές και τις μεθόδους σε μια γραφομηχανή «διαρροή» έξω στη δημόσια διασύνδεση του καταρτίζονται τάξη JavaScript.
Για μένα το θέμα είναι καθαρά αισθητικούς, δηλαδή είναι όλα σχετικά με την οπτική ακαταστασία όταν μια μεταβλητή παράδειγμα προβάλλεται σε DevTools. Λύση μου είναι στην ομάδα ιδιωτική δηλώσεις μαζί μέσα σε ένα άλλο τάξης που στη συνέχεια αρχικοποιείται στην κύρια κατηγορία και να ανατίθενται σε ένα private(αλλά ακόμα ορατά στο κοινό, JS) μεταβλητή με ένα όνομα όπως __(διπλή υπογράμμιση).
Παράδειγμα:
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);
Όταν η myClassπερίπτωση προβάλλεται σε DevTools, αντί να δείτε όλα τα «ιδιωτικά» τα μέλη του αναμειγμένα με πραγματικά δημόσια αυτά (τα οποία μπορεί να είναι πολύ οπτικά βρώμικο στη σωστή refactored κωδικό πραγματική ζωή) μπορείτε να δείτε τα ομαδοποιούνται σωστά στο εσωτερικό του κατέρρευσε __ακινήτου:
