如果我想使用 Node 8 编译的源代码,推荐的 typescript 配置是什么?
大多数教程使用以下 tsconig.json:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs"
}
}
但现在我发现,并非所有可用功能都受支持。例如 ['foo'].includes('bar')
抛出错误:类型“string[]”上不存在属性“includes”。
我找到了 issue解决了这个问题。解决方案是使用库 es7
.
我可以覆盖默认库:"lib": ["es7"]
但我不确定这是否是 Node 8 的最佳配置 - 是否还有更多功能不受该库的支持?定义了很多特性吗?
所以我的问题是:target
的最佳配置是什么? , lib
和 module
如果我想使用 Node 8?
最佳答案
从 Node.js 8.10.0
开始,支持 100% 的 ES2017。如果您知道您的目标是该版本或更高版本,则最佳配置如下所示:
“模块”:“commonjs”
Node.js 正在添加 ES-Modules,但现在我们必须坚持使用 CommonJS。
“目标”:“es2017”
这告诉 TypeScript 可以输出带有 ES2017 特性的 JavaScript 语法。在实践中,这意味着它将例如输出
async
/await
而不是嵌入 polyfill (__awaiter
)。"lib": ["es2017"]
这告诉 TypeScript 可以使用 ES2017 或更早版本中引入的函数和属性。在实践中,这意味着您可以使用例如
Array.prototype.includes
和String.prototype.padStart
.
完整的配置将是:
{
"compilerOptions": {
"lib": ["es2017"],
"module": "commonjs",
"target": "es2017"
}
}
如果你运行的是 Node.js 18,你可以看到我的 similar answer for Node.js 18 here
如果你运行的是 Node.js 16,你可以看到我的 similar answer for Node.js 16 here
如果你运行的是 Node.js 14,你可以看到我的 similar answer for Node.js 14 here
如果你运行的是 Node.js 12,你可以看到我的 similar answer for Node.js 12 here
如果你运行的是 Node.js 10,你可以看到我的 similar answer for Node.js 10 here
关于node.js - Node 8 的推荐 typescript 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48378495/