si j'écris un tel code dans webstorm
export class someOne {
constructor(param) {
this.test = param;
}
useTest(){
return this.test;
}
}
console.log(new someOne(123).useTest());
et passez la souris sur "this.test" je vois l'avertissement: "L'élément n'est pas exporté"
qu'est-ce que ça veut dire? si je change le .test
à .test1
l'avertissement disparaît
Pour moi, cela a fonctionné de marquer toutes les propriétés "privées" avec un trait de soulignement préfixé. De toute évidence, Webstorm/IntelliJ a reconnu les propriétés comme quelque chose qui ne devrait pas être exporté.
export class someOne {
constructor(param) {
this._test = param;
}
useTest(){
return this._test;
}
}
console.log(new someOne(123).useTest());
Webstorm essaie juste de vous empêcher d'ajouter des attributs non spécifiés. Vous devez définir des getters/setters. Cela empêche l'ajout et la récupération d'attributs comme des hacks sales.
Mise à jour - ajout de WeakMap pour que les variables soient vraiment privées.
let testWeakMap = new WeakMap();
export class someOne {
constructor(param) {
this.test = param;
}
useTest(){
return this.test;
}
get test () {
return testWeakMap.get(this);
}
set test (value) {
testWeakMap.set(this, value);
}
}
console.log(new someOne(123).useTest());