如何使用Typescript 1.7中的CommonJS模块正确生成ES6目标?

如何使用Typescript 1.7中的CommonJS模块正确生成ES6目标?,typescript,Typescript,在Typescript 1.7中添加了一个特性,允许分别针对语言系统和模块系统,例如,它可以为最新节点使用CommonJS模块系统生成ES6代码。但如果我使用以下命令和源代码进行尝试: tsc *.ts --target es6 --module commonjs 令人惊讶的是,生成的代码生成了一些非常奇怪的导出符号: // foo.js "use strict"; var bar_1 = require('./bar'); console.log(bar_1.default); 如您

在Typescript 1.7中添加了一个特性,允许分别针对语言系统和模块系统,例如,它可以为最新节点使用CommonJS模块系统生成ES6代码。但如果我使用以下命令和源代码进行尝试:

tsc *.ts --target es6 --module commonjs

令人惊讶的是,生成的代码生成了一些非常奇怪的导出符号:

// foo.js
"use strict";
var bar_1 = require('./bar');
console.log(bar_1.default);

如您所见,
bar.js
导致导出
bar
对象,而
foo.js
尝试导入
default
对象。当然,如果通过最新的
nodejs
v4.1.0执行,此代码将显示正在导入的“未定义”


有什么提示可以解释为什么会出现这种奇怪的行为吗?

您在TS 1.7中发现了一个bug。我相信这是正确的问题:

  • 以及合并到TS 1.8主分支中的相应错误修复
我通过在中运行代码来验证它TS@next(版本1.8.0-dev.20151216):


我需要它!非常感谢,我确信官方“最新功能”列表中的这一功能是一种保护措施,他们最后测试了它一次,它工作了,所以我确信这是我的错,我对现代模块解析技术一无所知。
// bar.ts
"use strict";
export default class Bar {}
// foo.js
"use strict";
var bar_1 = require('./bar');
console.log(bar_1.default);
// bar.js
"use strict";
class Bar {}
exports.Bar = Bar;
npm install typescript@next --save
node node_modules/typescript/bin/tsc --target es6 --module commonjs *.ts && node foo.js