javascript - webstorm: ¿qué significa el aviso "El elemento no se exporta"?
ecmascript-6 warnings (2)
Si escribo tal código en webstorm
export class someOne {
constructor(param) {
this.test = param;
}
useTest(){
return this.test;
}
}
console.log(new someOne(123).useTest());
y el mouseover en "this.test" veo la advertencia: "Elemento no se exporta"
¿Qué significa eso? Si cambio el .test
a .test1
la advertencia desaparece
Para mí, funcionó para marcar todas las propiedades "privadas" con un subrayado prefijado. Obviamente, Webstorm / IntelliJ reconoció las propiedades como algo que no debería exportarse.
export class someOne {
constructor(param) {
this._test = param;
}
useTest(){
return this._test;
}
}
console.log(new someOne(123).useTest());
Webstorm simplemente intenta evitar que agregues atributos no especificados. Es necesario definir getters / setters. Esto evita agregar y agarrar atributos como hacks sucios.
Actualización: se agregó WeakMap para tener variables realmente privadas.
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());