27 votes

webstorm: que signifie l'avertissement "L'élément n'est pas exporté"?

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é"

l'élément n'est pas exporté wtf

Qu'est-ce que ça veut dire? si je change le .test en .test1 l'avertissement disparaît

9voto

Fabian Points 391

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());
 

4voto

Niels Steenbeek Points 291

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 en tant que 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());
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X