node.js - Node 8 的推荐 typescript 配置

标签 node.js typescript

如果我想使用 Node 8 编译的源代码,推荐的 typescript 配置是什么?

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

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

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

我找到了 issue解决了这个问题。解决方案是使用库 es7 . 我可以覆盖默认库:"lib": ["es7"]

但我不确定这是否是 Node 8 的最佳配置 - 是否还有更多功能不受该库的支持?定义了很多特性吗?

所以我的问题是:target 的最佳配置是什么? , libmodule如果我想使用 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.includesString.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/

相关文章:

node.js - 在 LoopbackJS : How to get server protocol (http or https) in a boot script or server side code? 中

javascript - 服务器使用 node.js (express) 发送事件/事件源

javascript - Lambda 函数从不工作的函数返回 promise

typescript - 如何在具有 getter 和 setter 的属性上使用 Aurelia 的可绑定(bind)装饰器

node.js - Sails.js 非静态路由 url

python - Circleci 与 gcloud sdk UnicodeDecodeError

javascript - 如何在 ES5 代码中生成 'endsWith' 和其他字符串函数

javascript - 在 Typescript 中,类型和接口(interface)有什么区别?

api - Angular 2 Observable 发射/错误函数在调用一次错误函数后被忽略

angular - 如何使用 typescript/angular 2 正确使用 PrismJS 及其类型