javascript ecmascript-6 warnings webstorm

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