2017-02-02 9 views
9

私の質問があるため、モジュール[インポート/ある理解「ターゲット」と「モジュール」

{ 
    "compilerOptions": { 
    "target": "es5",  
    "module": "es6" 
    } 

} 

「ES6」に私のtsconfig.jsonの私は「ES5」にターゲットを設定しているファイルおよびモジュールでありますエクスポート]はes6の一部でes5ではなく、翻訳されたjavascriptコードはインポート/エクスポートステートメントを持ってはいけません。 しかし、ターゲットがes5であっても、生成されるjavascriptコードにはインポート/エクスポート文があります。どうすれば可能ですか?

+2

[そのように実装した](https://github.com/Microsoft/TypeScript/pull/9042)、[ここに理由がいくつかある](https://github.com/Microsoft/TypeScript/issues/6319) – artem

答えて

16

モジュールシステムは、言語の実装とは独立しています。 ES6(ES2015)モジュールはインポート/エクスポート構文を使用し、それを解釈するのはモジュールローダーまでです。

ここでは、ES2015モジュールシステムを使用して指定しているため、ES6モジュールの構文が有効になります。

Javascript自体はES5を対象とし、ES5機能のみを使用することができますが、ES2015モジュール構文で動作するコードでモジュールローダーを使用することは理論上可能です。それは可能ですが、必ずしもあなたがしたいことではありません。 CommonJSまたはAMDモジュールをES5 Javascriptで使用する方が一般的です。

明らかに、この組み合わせはTypescript 2.0より前であっても許可されませんでした。

"これまで無効なフラグの組み合わせとしてフラグが設定されていましたが、target:es5と 'module:es6'がサポートされています。これにより、ロールアップのようなES2015ベースのツリーシェイカーの使用が容易になります。

関連する問題