【问题标题】:Compiling Typescript to NodeJs: es6 types issues将 Typescript 编译为 NodeJs:es6 类型问题
【发布时间】:2017-08-03 07:54:09
【问题描述】:

我认为我在与 nodejs 一起使用时缺少 typescript 2 类型系统的一些东西。


情况如下:

  • 将一个用 typescript 编写的小型 nodejs express 服务器编译为纯 es5 以便在节点 6.10.0 下运行(目标:es5在 tsconfig.json 中)。
  • 在我的 package.json 中,我安装了 @types/node (7.0.3) 以获取节点的类型信息。

当使用 npm (v3.10.10) 安装我的项目,然后使用 typescript (v2.1.5) 编译它时,我得到一堆或与“Iterable”和“Iterator”符号(它们是 es6 符号)相关的错误。

据我了解,@types/node 使用开箱即用的 es6 类型,假设它们已经可用。

为了拥有 es6 类型(Iterator、Iterable 等),有两种解决方案:

  1. 添加 core-js 包。
  2. 在 tsconfig.json 中以 es6 而不是 es5 为目标,这将强制 typescript 使用它的 lib/lib.es2015..d.ts* 定义文件。

在我看来,第二种方法更好。

这是将 ts 编译到 node 时的官方方式吗? 即:在 tsconfig 中以 es6 为目标?

我如何确定底层节点引擎将有效地支持那些 es6 特性?如果我使用的是不支持 es6 的旧 nodejs 版本怎么办?

我很乐意讨论以清楚地了解底层机制!

谢谢

【问题讨论】:

    标签: node.js typescript npm


    【解决方案1】:

    由于 node 还不完全支持所有 es6 功能,请参阅:node green

    最好以 es5 为目标并安装 core-js 类型:

    npm install @types/core-js
    

    【讨论】:

    • 我发现 NodeJS 对 ES6 的支持(设置了和声标志)已经有相当长的一段时间了。实际上 6.10.0 是 LTS 版本,它支持大部分(如果不是全部)ES6 特性。强制不使用比 LTS 更早的版本是合理的。简而言之,我现在会选择 ES6
    猜你喜欢
    • 2013-07-27
    • 1970-01-01
    • 2018-08-12
    • 2019-12-08
    • 2018-01-23
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    相关资源
    最近更新 更多