3

私は 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 つのバージョン以外のことはほとんど行いません。

4

1 に答える 1