私がそのようなコードをwebstormで書いたら
export class someOne {
constructor(param) {
this.test = param;
}
useTest(){
return this.test;
}
}
console.log(new someOne(123).useTest());
「this.test」にマウスオーバーすると、「要素はエクスポートされません」という警告が表示されます
どういう意味ですか? .test
を.test1
に変更すると、警告が消えます
私にとっては、すべての「プライベート」プロパティにアンダースコアを前に付けてマークするように働きました。明らかにWebstorm/IntelliJはプロパティをエクスポートすべきでないものとして認識しました。
export class someOne {
constructor(param) {
this._test = param;
}
useTest(){
return this._test;
}
}
console.log(new someOne(123).useTest());
Webstormは、指定されていない属性の追加を防止しようとします。ゲッター/セッターを定義する必要があります。これにより、属性がダーティハックとして追加および取得されるのを防ぎます。
更新-変数を本当にプライベートにするためにWeakMapを追加しました。
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());