私は TypeScript プロジェクトに取り組んでおり、出力ターゲットとして ES2017 を使用しています。これは、Babel を通過するため、ライブラリの 1 つと同様に、ES2017 を使用しています。私たちはBabelをターゲットにしています。
すべてうまくいっているように見えるので、あまり心配していません。ただし、舞台裏で何が起こっているのか、または「lib」オプションが実際に何をしているのかはわかりません (IDE に何ができるかを伝える以外に、ops の拡散や Promises など)。 TypeScript からの最高の出力を指定してから、Babel の非常に特定のターゲットにコンパイルするのは効率的ではありません。これも WebPack を介して行われるため、ツリー シェーキングを利用しています。
2 番目の質問は、「ES2017」がライブラリに含まれている場合、ES2015 および ES2016 のすべての機能が含まれているかどうかです (つまり、リストに ES2017 を含めて、ES2015 および/または ES2016 を含める理由はありますか?)
{
"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"
]
}
余談ですが、Babel の "Env" で "最新の 1 つの Chrome バージョン" をターゲットにすると、トランスパイルはほとんど行われず、非常にエキサイティングです。プロダクション コードではなく、プロトタイプを作成しているだけなので、サポートが必要なときにサポートが必要なブラウザーを具体的に追加しますが、Chrome の最後の 1 つまたは 2 つのバージョン以外のことはほとんど行いません。