6

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

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

以“ES6”或更高版本为目标时,无法将模块编译为“commonjs”、“amd”、“system”或“umd”。

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

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

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

有没有办法可以做到这一点?注意:我不想转译为 ES5。我希望我的 JS 在和谐标志下作为 ES6 运行。谢谢!

4

1 回答 1

3

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

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

更新

tsconfig.json

{
  "compilerOptions": {
    "target":"ES6",
    "moduleResolution": "classic",
  }
}
  • 生成器支持 ES6
  • 没有import东西转译由于 "moduleResolution": "classic"
于 2015-10-03T09:49:47.397 回答