es6模块与节点和声标志下的打字稿的commonjs

Sim*_*lla 6 javascript node.js typescript babeljs typescript1.6

我正在使用带有--harmony标志下的节点的TypeScript(1.6),所以我想将es6模块语法转换为commonjs.

据我所知,我不能用TypeScript 1.6做到这一点.如果我将目标设置为es6,将模块设置为commonjs,则会出现TypeScript错误 -

在定位"ES6"或更高版本时,无法将模块编译为"commonjs","amd","system"或"umd".

为什么TypeScript不会编译为带有ES6目标的commonjs?我想很多人都想这样做,因为节点还不支持ES6模块.

我认为新的moduleResolution编译器选项可能会解决这个问题,但它似乎没有做任何事情.

目前,我不得不使用babel将模块语法转换为commonjs,但我想从我的构建中删除babel,以便我可以利用源映射.

有没有办法实现这个目标?注意:我不想转发到ES5.我希望我的JS在和声标志下作为ES6运行.谢谢!

Rem*_*sen 3

TypeScript 团队将在下一个版本中添加对您所需内容的支持。您可以等待几周/几个月。或者,您可以使用 Polyfill 作为 ES6 模块加载器:

网上还有更多类似上述的库,只需检查哪一个可以为您完成工作,直到官方支持--module到来--target es6。

更新

tsconfig.json

{
  "compilerOptions": {
    "target":"ES6",
    "moduleResolution": "classic",
  }
}
Run Code Online (Sandbox Code Playgroud)
  • ES6 支持生成器
  • 没有import东西转译,因为 "moduleResolution": "classic"