2017-01-13 10 views
3

TypeScriptプロジェクトでBabelでコンパイルしたモジュールを使用しようとしています。しかし、私は静的なプロパティとメソッドにエラーがあります。Babelの列挙型プロパティの設定方法

これはextendsのTypeScriptヘルパーです。ご覧のとおり、for..inを使用しています。

var __extends = (this && this.__extends) || function (d, b) { 
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; 
    function __() { this.constructor = d; } 
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 
}; 

バベルの静的プロパティ/メソッドのenumerableを設定する方法はありますか?

enter image description here

+0

あなたは手動で 'Object.defineProperty(XmlObject、 'LoadXml'、{enumerable:true})'を実行できます。 ES6仕様では、これらは列挙できません。 – loganfsmyth

+2

あなたはエラーがあると言いますが、そのエラーは何もありません。静的メソッドは、ES6仕様では列挙できません([14.5.14ランタイムセマンティクス:ClassDefinitionEvaluation](http://www.ecma-international.org/ecma-262/6.0/#sec-runtime-semantics -classdefinitionevaluation))。あなたのスクリーンショットは、 'Test.LoadXml()'が 'XmlObject.LoadXml'を正しく呼び出すことを示しています(' 'Success'"を記録します)。あなたは何を達成しようとしていますか? –

+0

@Jordan Test.LoadXml()に結果がありません。これはエラーです。この関数が必要です。 – Microshine

答えて

0

ES2015 classes transformプラグインで緩いのオプションがあり、デフォルト値はfalseです。あなたは、メソッドがクラスのプロトタイプオブジェクトに定義されます。この設定ではtrue

このような
{ 
    "plugins": [ 
    ["transform-es2015-classes", { 
     "loose": true 
    }] 
    ] 
} 

にこの値を設定することができます。しかし、これはいくつかの他の問題を引き起こすでしょう。

class Foo { 
    set bar() { 
    throw new Error("foo!"); 
    } 
} 
class Bar extends Foo { 
    bar() { 
    // will throw an error when this method is defined 
    } 
} 

詳細については、documentを参照してください。

関連する問題