如果我只在Node中使用TypeScript,那么我可以将它转换为ES6吗?

3
我正在编写一个运行在Node上的新应用程序。该代码只会在Node服务器上运行,因此浏览器兼容性不是问题。代码库使用TypeScript编写。
在我的tsconfig.json文件中,我为编译器设置了以下选项:
{
  "include": [
    "src/**/*"
  ],
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",

    "sourceMap": true,
    "noEmitOnError": true,
    "noImplicitAny": true,
    "noImplicitReturns": true,
    "noImplicitThis": true
  }
}

请注意,我正在使用ES6并导出CommonJS模块!
由tsc(版本2.1.4)生成的代码在Node(版本6.9.1)上运行良好,就我所测试的而言。此外,查询node.green表明,大多数ES5和ES6功能在Node中得以实现。
可悲的是,我找不到任何关于应该使用哪个JavaScript版本与Node的官方建议或信息。据我所见,没有什么可以阻止我使用ES6。
我的问题:我可以可靠地将生成的ES6代码与Node一起使用吗?

1
只要你只使用你的Node版本支持的ES6功能,那么是可以的。 - Joe Clay
1
@JoeClay 是否有任何我可以使用的 lint 功能来检查这些内容? - Lukas Knuth
如果您已经查看了node.green,为什么还要问这个问题呢?是的,Node完全支持ES6(除了ES6模块)。 - Estus Flask
@estus 嗯,除了实现功能之外,可能还有其他原因会导致问题。我没有找到任何类似于“运行良好,请注意间隙”的东西。我只是不想它以后在生产中失败,这就是为什么我问的原因。 - Lukas Knuth
1
幸运的是,“其他事情”也可以被描述为特性。因此,不会有意外的问题。但是,如果将ES6特定代码转译为ES5,则可能会出现问题。 - Estus Flask
显示剩余2条评论
2个回答

1

所有ES6实现细节都可以描述为特性。这就是node.green所做的。

除了ES6模块,Node 6+完全支持ES6(99%兼容,有一些小差异)。

因此,不应该有意外的问题。但是,如果将ES6特定代码转换为ES5,则ES5目标可能会引起麻烦。


0
这是Node.js网站的说法:
所有ECMAScript 2015(ES6)功能分为三组,包括发布、阶段和正在进行的功能:
- 所有发布功能(V8认为是稳定的)默认在Node.js上启用,不需要任何运行时标志。 - 阶段功能是几乎完成但未被V8团队认为是稳定的功能,需要一个运行时标志:--harmony。 - 正在进行的功能可以通过各自的harmony标志单独激活,尽管这样做是非常不鼓励的,除非出于测试目的。注意:这些标志由V8公开,并可能会在没有任何弃用通知的情况下发生变化。
阅读更多这里

我读了那个并且在node.green上检查了结果表。问题是,还有没有其他原因不这样做? - Lukas Knuth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接