一尘不染

节点8的推荐打字稿配置

node.js

如果要使用节点8编译源代码,建议为打字稿配置什么?

大多数教程使用以下 tsconig.json

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs"
  }
}

但是现在我发现,并非所有可用功能都受支持。例如,['foo'].includes('bar')抛出错误: 类型’string
[]’不存在属性’includes’。

我发现了一个问题,即解决了这个问题。解决方法是使用lib es7。我可以覆盖默认库:"lib": ["es7"]

但是我不确定这是否是节点8的最佳配置-该库不支持更多功能吗?是否定义了很多功能?

所以我的问题是:最好的配置是什么targetlib以及module是否要使用节点8?


阅读 186

收藏
2020-07-07

共1个答案

一尘不染

从Node.js开始8.10.0,支持100%的ES2017。如果您知道要针对该版本或更高版本,则最佳配置应如下所示:

  • "module": "commonjs"

Node.js是添加ES模块的一种方式,但是现在我们必须坚持使用CommonJS。

  • "target": "es2017"

这告诉TypeScript可以使用ES2017中的功能输出JavaScript 语法 。实际上,这意味着它将例如输出async/
await而不是嵌入polyfill(__awaiter)。

  • "lib": ["es2017"]

这告诉TypeScript可以使用ES2017或更早版本中引入的 函数和属性 。实际上,这意味着您可以使用eg
Array.prototype.includesString.prototype.padStart

因此,完整的配置为:

{
  "compilerOptions": {
    "lib": ["es2017"],
    "module": "commonjs",
    "target": "es2017"
  }
}
2020-07-07