मुझे पता है यह एक बड़ी चर्चा है लेकिन यह अभी भी संकलित जावास्क्रिप्ट वर्ग के सार्वजनिक इंटरफ़ेस में बाहर "लीक" माना जाता है कि निजी चर और एक टाइपप्रति में तरीकों की समस्या के लिए मेरे समाधान साझा करने के लिए उपयोगी हो सकता है।
मेरे लिए इस मुद्दे को, विशुद्ध रूप से कॉस्मेटिक है यानी यह सब के बारे में दृश्य अव्यवस्था जब एक उदाहरण चर DevTools में देखा जाता है है। मेरे ठीक एक और वर्ग है कि फिर मुख्य वर्ग में instantiated है और एक को सौंपा गया है अंदर एक साथ समूह निजी घोषणाओं के लिए है privateकी तरह एक नाम के साथ (लेकिन अभी भी जे एस में सार्वजनिक रूप से दिखाई) चर __(डबल अंडरस्कोर)।
उदाहरण:
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उदाहरण के बजाय सही मायने में जनता (जो बहुत नेत्रहीन ठीक से पुनर्संशोधित वास्तविक जीवन कोड में गन्दा प्राप्त कर सकते हैं) के साथ intermixed सभी अपने "निजी" के सदस्यों को देखने का, DevTools में देखा जाता है जैसा कि आप देख उन्हें बड़े करीने से ढह अंदर वर्गीकृत किया __संपत्ति:
