输出将在 Node.js 12 上运行的代码的最佳 TypeScript tsconfig
设置是什么?
原文由 Linus Unnebäck 发布,翻译遵循 CC BY-SA 4.0 许可协议
输出将在 Node.js 12 上运行的代码的最佳 TypeScript tsconfig
设置是什么?
原文由 Linus Unnebäck 发布,翻译遵循 CC BY-SA 4.0 许可协议
5 回答4.8k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
3 回答2k 阅读
5 回答1.9k 阅读
1 回答3.2k 阅读
从 Node.js
12.0.0
开始,支持 100% 的 ES2019。如果您知道您的目标是该版本或更高版本,则最佳配置将如下所示:"module": "commonjs"
Node.js 正在添加 ES-Modules,但现在我们必须坚持使用 CommonJS。
"target": "es2019"
这告诉 TypeScript 可以输出带有 ES2019 特性的 JavaScript _语法_。在实践中,这意味着它将例如输出对象的 rest/spread 属性和 async/await 语法,而不是嵌入一个 polyfill。
"lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"]
这告诉 TypeScript 可以使用 ES2019 或更早版本中引入的 _函数和属性_。实际上,这意味着您可以使用例如
String.prototype.trimStart
和Array.prototype.flat
。除了 ES2019,Node.js 12 还支持来自 ES2020 的
BigInt
和matchAll
,因此我们包括来自 ES2020 的附加定义。因此,完整的配置将是:
如果您的目标是 Node.js
12.9.0
或更新版本,您可以简单地指定"lib": ["es2020"]
因为该版本支持 ES2020 中引入的所有新 _功能和属性_。但它不支持新的 JavaScript _语法_,所以你仍然需要继续使用"target": "es2019"
。因此,完整的配置将是:
如果您正在运行 Node.js 18,您可以 在此处查看我对 Node.js 18 的类似答案
如果您正在运行 Node.js 16,您可以 在此处查看我对 Node.js 16 的类似答案
如果您正在运行 Node.js 14,您可以 在此处查看我对 Node.js 14 的类似答案
如果您正在运行 Node.js 10,您可以 在此处查看我对 Node.js 10 的类似答案
如果您正在运行 Node.js 8,您可以 在此处查看我对 Node.js 8 的类似答案