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

时间:2015-12-17 06:35:45

标签: typescript

在Typescript 1.7中添加了一个功能,允许单独定位语言系统和模块系统,前者可以为最新节点生成带有CommonJS模块系统的ES6代码。但是,如果我尝试使用以下命令和源代码:

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

// foo.ts
"use strict";
import Bar from './bar';
console.log(Bar);

// 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;

如您所见,bar.js导致导出Bar对象,而foo.js尝试导入default对象。当然,如果通过最新的nodejs v4.1.0

执行,此代码会显示导入的“未定义”

任何提示为何会出现这种奇怪的行为?

1 个答案:

答案 0 :(得分:2)

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

我通过在TS @ next(版本1.8.0-dev.20151216)中运行代码来验证它:

npm install typescript@next --save
node node_modules/typescript/bin/tsc --target es6 --module commonjs *.ts && node foo.js