As of Node.js 8.10.0
, 100% of ES2017 is supported. If you know that you are targeting that version or newer, the optimal config would look like this:
-
"module": "commonjs"
Node.js is on it’s way to add ES-Modules, but for now we’ll have to stick with CommonJS.
-
"target": "es2017"
This tells TypeScript that it’s okay to output JavaScript syntax with features from ES2017. In practice, this means that it will e.g. output
async
/await
instead of embedding a polyfill (__awaiter
). -
"lib": ["es2017"]
This tells TypeScript that it’s okay to use functions and properties introduced in ES2017 or earlier. In practice, this means that you can use e.g.
Array.prototype.includes
andString.prototype.padStart
.
The full config would thus be:
{
"compilerOptions": {
"lib": ["es2017"],
"module": "commonjs",
"target": "es2017"
}
}
If you are running Node.js 18 you can see my similar answer for Node.js 18 here
If you are running Node.js 16 you can see my similar answer for Node.js 16 here
If you are running Node.js 14 you can see my similar answer for Node.js 14 here
If you are running Node.js 12 you can see my similar answer for Node.js 12 here
If you are running Node.js 10 you can see my similar answer for Node.js 10 here