本稿では、Node.jsのバージョンに合ったTypeScriptのコンパイル設定(tsconfig.json)を紹介します。
サーバサイドアプリケーションやCLIアプリケーションをTypeScriptで開発する場合、実行環境としてNode.jsのバージョンを気にすることになります。本稿は、狙ったNode.jsのバージョンに合ったコンパイル設定はどうしたらいいかについて説明するものです。
Node.js 10
{
"compilerOptions": {
"target": "es2018",
"lib": ["es2018"]
}
}
Node.js 10は、ES2018の構文とライブラリの両方を100%サポートしているので、target
もlib
もes2018
にする。
Node.js 12
Node.js 12.9未満の場合
{
"compilerOptions": {
"target": "es2019",
"lib": [
"es2019",
"es2020.bigint",
"es2020.string",
"es2020.symbol.wellknown"
]
}
}
Node.js 12.9未満はES2019の構文とライブラリを100%サポートしているので、target
もlib
もes2019
で良い。また、ES2020のライブラリも一部もサポートしているので、それらをlib
に加えて良い。
Node.js 12.9以降の場合
{
"compilerOptions": {
"target": "es2019",
"lib": ["es2020"]
}
}
Node.js 12.9以降は、ES2019の構文と、ES2020のライブラリをサポートしているので、target
はes2019
にし、lib
はes2020
にする。
Node.js 14
{
"compilerOptions": {
"target": "es2020",
"lib": ["es2020"]
}
}
Node.js 14.0.0からは、ES2020の構文とライブラリの両方を100%サポートしているので、target
もlib
もes2020
で良い。
参考: Node.jsのサポート終了日
参考までに、Node.js(LTS)のサポート終了日は以下のとおり:
- Node.js 8 → すでに終了
- Node.js 10 → 2021-04-30まで
- Node.js 12 → 2022-04-30まで
- Node.js 14 → 2023-04-30まで
合わせて読むといいかも
参考文献
- Node Target Mapping · microsoft/TypeScript Wiki
- Node.js ES2015/ES6, ES2016 and ES2017 support
- TypeScript/src/lib at master · microsoft/TypeScript
- node.js - recommended typescript config for node 8 - Stack Overflow
- TypeScript tsconfig settings for Node.js 10? - Stack Overflow
- TypeScript tsconfig settings for Node.js 12? - Stack Overflow
- What TypeScript configuration produces output closest to Node.js 14 capabilities? - Stack Overflow
最後までお読みくださりありがとうございました。Twitterでは、Qiitaに書かない技術ネタなどもツイートしているので、よかったらフォローしてもらえると嬉しいです→Twitter@suin