1

私はES6で書かれた単純なクラスを持っています

class MyClass {
  constructor() {
    this.firstVar = 'a';
    this.secondVar = 'b';
  }
  get first() { return this.firstVar; }
  set first(val) { this.firstVar = val; }

  get second() { return this.secondVar; }
  set second(val) { this.secondVar = val; }

  allValues() {
    return this.firstVar + this.secondVar;
  }
}

export { MyClass };

そのコードを ES5 にコンパイルしてからbabel MyClass.es6 > MyClass.js、既存の ES5 コードベースで使用してみます。

var t = require('./MyClass');
console.log(t.allValues());

しかし、t にはメソッド allValues がないというエラーが表示されます。私がやろうとしていることは可能ですか?

4

1 に答える 1

3

クラスはインスタンス化する必要があります。のインスタンスを作成することはありませんMyClass。また、間違ってインポートしています。名前付きエクスポートとしてエクスポートMyClassているため、そのようにインポートする必要があります。

現在の形式では、あなたはしなければならないでしょう

var MyClass = require('./MyClass').MyClass;
var t = new MyClass();
console.log(t.allValues());

または、デフォルトのエクスポートとしてエクスポートできます。

export default MyClass;

その場合、あなたはすることができます

var t = require('./MyClass');

(少なくともバベルでは)

于 2015-04-13T17:59:40.173 に答える