[解決済み] tsconfigの "target "と "module "を理解する。
質問
以下は、私の
tsconfig.json
ファイルで、ターゲットを
es5
とし、モジュールを
es6
{
"compilerOptions": {
"target": "es5",
"module": "es6"
}
}
私の質問は、モジュール[import / export]はes6の一部であり、es5ではないので、トランスパイルコードはimport / exportステートメントを持っていないはずです。 しかし、生成されたjavascriptコードは、ターゲットがes5であるにもかかわらず、import / exportステートメントを持っています、それはどのように可能ですか?
どのように解決するのですか?
モジュールシステムは、言語実装から独立しています。ES6 (ES2015) のモジュールでは
import
/
export
という構文があり、それを解釈するかどうかはモジュールローダー次第です。
ここでは、ES2015モジュールシステムを使用するように指定しているため、ES6モジュール構文が有効になっています。
JavaScript自体はES5をターゲットとしており、ES5の機能のみを使用していますが、ES2015モジュール構文で動作するコードでモジュールローダーを使用することは理論的には可能です。可能ではありますが、必ずしもそうしたいわけではありません。ES5のJavaScriptでCommonJSまたはAMDモジュールを使用する方が一般的です。
どうやらこの組み合わせは、TypeScript 2.0以前は許されるものでもなかったようです。TypeScript 2.0のリリースノートにはこう書かれています。
"以前は無効なフラグの組み合わせとしてフラグが立っていた、target: es5 と 'module: es6' がサポートされました。これにより、rollup." のような ES2015 ベースのツリー シェイカーの使用が容易になるはずです。
関連
-
[解決済み】tsconfigファイルにおけるesModuleInteropの理解
-
[解決済み] コンストラクタとngOnInitの違いについて
-
[解決済み] Typescript によるインターフェース型チェック
-
[解決済み] "require(x)" と "import x" の違いについて
-
[解決済み】angular2 + typescriptアプリケーションにlodashをインポートする。
-
[解決済み] describe'という名前が見つかりません。テストランナー用の型定義をインストールする必要がありますか?
-
[解決済み] ts ES5/ES3の非同期関数やメソッドには、「Promise」コンストラクタが必要です。
-
[解決済み] Angular 2でアプリ起動時にサービスを実行する方法
-
[解決済み] tsconfig.jsonのtargetは何のためにあるのですか?
-
[解決済み] タイプスクリプト。カスタムタイプに対する typeof のチェック
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] TypeScriptで Object.keys return string[].
-
[解決済み] TypeScriptの予約語 "type "とは何ですか?
-
[解決済み] describe'という名前が見つかりません。テストランナー用の型定義をインストールする必要がありますか?
-
[解決済み] ts ES5/ES3の非同期関数やメソッドには、「Promise」コンストラクタが必要です。
-
[解決済み] Angular 2でアプリ起動時にサービスを実行する方法
-
[解決済み] 文字列ユニオンから文字列配列へ
-
[解決済み] Typescript のプリミティブ型:"number" と "Number" の違い(TSC は大文字と小文字を区別しない)?
-
[解決済み] グローバルスコープの拡張は、外部モジュールまたはアンビエントモジュール宣言にのみ直接ネストすることができます(2669)
-
[解決済み] モジュールと名前空間 - Import vs Require Typescript
-
[解決済み] typescriptでmoment.jsをインポートするには?