1. ホーム
  2. node.js

[解決済み] Node.js 12のTypeScript tsconfigの設定?

2023-05-23 15:39:49

質問

最適なTypeScriptの tsconfig の設定は、Node.js 12で実行されるコードを出力するために最適ですか?

どのように解決するのですか?

Node.jsの場合 12.0.0 として、100% ES2019 がサポートされています。そのバージョン以降をターゲットにしていることが分かっている場合、最適なコンフィグは以下のようになります。

  • "module": "commonjs"

    Node.jsはES-Moduleを追加する方向ですが、今はCommonJSにこだわるしかないでしょう。

  • "target": "es2019"

    これはTypeScriptに、JavaScriptを出力しても良いということを伝えるものです。 構文 を出力することを許可する。実際には、ポリフィルを埋め込む代わりに、例えばオブジェクトレスト/スプレッドプロパティやasync/await構文を出力することを意味します。

  • "lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"]

    これは、TypeScriptに 関数とプロパティ を使用してもよいことを伝えます。実際のところ、これは例えば String.prototype.trimStartArray.prototype.flat .

    ES2019 に加え、Node.js 12 では BigInt を追加しました。 matchAll はES2020のものであるため、ES2020の追加定義を含んでいます。

したがって、完全な構成は次のようになります。

{
  "compilerOptions": {
    "lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"],
    "module": "commonjs",
    "target": "es2019"
  }
}


Node.jsをターゲットにしている場合 12.9.0 またはそれ以降の を指定すると、単純に "lib": ["es2020"] を指定するだけで、そのバージョンはすべての新しい 関数とプロパティ をサポートしているからです。これは、新しい JavaScript の 構文 をサポートしていないので、まだ "target": "es2019" .

完全なコンフィグはこのようになります。

{
  "compilerOptions": {
    "lib": ["es2020"],
    "module": "commonjs",
    "target": "es2019"
  }
}


Node.js 16を実行している場合、私の Node.js 16 に対する同様の回答はこちらです。

もしあなたがNode.js 14を実行しているならば、私の Node.js 14のための同様の回答はこちらです。

もしあなたがNode.js 10を実行しているならば、私の Node.js 10のための同様の回答はこちらです。

もしNode.js 8を実行しているならば、私の Node.js 8のための同様の回答はこちらです。