2017-03-22 8 views
1

私はTypeScriptプロジェクトに取り組んでいます。私たちはBabelを経由するため、libsの1つと出力ターゲットとしてES2017を使用しています。 Babelでターゲットとする「Env」の最新機能をサポートします。TypeScript TSConfig CompilerOptions ES2017ターゲットとライブラリ

すべてがうまくいくように見えるので、あまり心配していません。しかし、私は舞台裏で何が起こっているのか、あるいは "lib"オプションが本当に何をしているのか分からない(私のIDEに私ができること、例えば普及活動、約束など) TypeScriptの最高出力を指定してから、Babelの非常に特定のターゲットにコンパイルすることは効率的ではありません。これはWebPackも行っているので、私たちは木の揺れを利用しています。

「ES2017」がlibに含まれている場合、ES2015とES2016のすべての機能が含まれていますか(言い換えれば、ES2015またはES2016をES2017とともに使用する理由はありますか?さておき、バベルで「最後の1つのChromeのバージョンを」ターゲッティング「のEnv」として)

{ 
    "compilerOptions": { 
    "target": "ES2017", 
    "module": "ES2015", 
    "moduleResolution": "Node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "forceConsistentCasingInFileNames": true, 
    "allowSyntheticDefaultImports": true, 
    "noEmitHelpers": true, 
    "importHelpers": true, 
    "pretty": true, 
    "alwaysStrict": true, 
    "lib": [ 
     "DOM", 
     "ES2017", 
     "DOM.Iterable", 
     "ScriptHost" 
    ], 
    "baseUrl": "./client", 
    "paths": { 
     "styles/*": ["./app/styles/*"], 
     "core/*": ["./app/core/*"], 
     "components/*": ["./app/components/*"], 
     "containers/*": ["./app/containers/*"], 
     "assets/*": ["./assets/*"], 
     "config/*": ["./config/*"] 
    } 
    }, 
    "files": [ 
    "./client/custom-typings.d.ts", 
    "./client/app/app.ts" 
    ] 
} 

、それはほとんどかなりエキサイティングである、まったくtranspilingもしません。プロダクトコードではなく、プロトタイプを作成するだけなので、サポートが必要なときにサポートする必要のあるブラウザを追加しますが、Chromeの最後のバージョンではないものはほとんどありません。

答えて

1

まあTypescript GitHublib可能性の実際の実装を見て、ES2017は、これらのパッケージのすべてが含まれていることを思わ:

/// <reference path="lib.es2016.d.ts" /> 
/// <reference path="lib.es2017.object.d.ts" /> 
/// <reference path="lib.es2017.sharedmemory.d.ts" /> 
/// <reference path="lib.es2017.string.d.ts" /> 

そしてes2016.d.tsには、以下の参照が含まれています

/// <reference path="lib.es2015.core.d.ts" /> 
/// <reference path="lib.es2015.collection.d.ts" /> 
/// <reference path="lib.es2015.generator.d.ts" /> 
/// <reference path="lib.es2015.iterable.d.ts" /> 
/// <reference path="lib.es2015.promise.d.ts" /> 
/// <reference path="lib.es2015.proxy.d.ts" /> 
/// <reference path="lib.es2015.reflect.d.ts" /> 
/// <reference path="lib.es2015.symbol.d.ts" /> 
/// <reference path="lib.es2015.symbol.wellknown.d.ts" /> 
/// <reference path="lib.es5.d.ts" /> 
/// <reference path="lib.es2015.d.ts" /> 
/// <reference path="lib.es2016.array.include.d.ts" /> 

そして最後には、参照をes2015.d.ts

es2017にはほとんどのES機能が含まれていると想定するのは安全です。

興味深いことにes6はどこにも含まれていませんが、別途参照なしで別のfileを提供していますが。私はそれがどのように機能するのか本当に分かっていませんが、私はそれが上記のいくつかのものの別々の組み合わせだと仮定します。

編集:私は上記のes6ジレンマにいくつかのより多くの研究を行ってきたし、異なるquestionに私の調査結果を掲載している

関連する問題