从 Node.js 开始12.0.0
,100%支持ES2019。如果您知道您的目标是该版本或更高版本,则最佳配置将如下所示:
-
"module": "commonjs"
Node.js 正在添加 ES 模块,但现在我们必须坚持使用 CommonJS。
-
"target": "es2019"
这告诉 TypeScript 可以输出 JavaScriptsyntax具有 ES2019 的功能。在实践中,这意味着它将例如输出对象剩余/扩展属性和异步/等待语法而不是嵌入填充。
-
"lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"]
这告诉 TypeScript 可以使用功能和属性ES2019 或更早版本引入。在实践中,这意味着您可以使用例如String.prototype.trimStart
and Array.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.js12.9.0
或更新的,您可以简单地指定"lib": ["es2020"]
因为该版本支持所有新版本功能和属性ES2020 中引入。它不支持新的 JavaScriptsyntax不过,所以你还是要坚持下去"target": "es2019"
.
完整的配置将是:
{
"compilerOptions": {
"lib": ["es2020"],
"module": "commonjs",
"target": "es2019"
}
}
如果您运行的是 Node.js 18,您可以看到我的Node.js 18 的类似答案在这里 https://stackoverflow.com/a/72380008/148072
如果您运行的是 Node.js 16,您可以看到我的Node.js 16 的类似答案在这里 https://stackoverflow.com/a/67371788/148072
如果您运行的是 Node.js 14,您可以看到我的Node.js 14 的类似答案在这里 https://stackoverflow.com/a/61305579/148072
如果您运行的是 Node.js 10,您可以看到我的Node.js 10 的类似答案在这里 https://stackoverflow.com/a/57607634/148072
如果您运行的是 Node.js 8,您可以看到我的Node.js 8 的类似答案在这里 https://stackoverflow.com/a/50466512/148072