在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执行,此代码显示"undefined"正在导入
任何提示为何会出现这种奇怪的行为
1 回答
您在TS 1.7中发现了一个错误 . 我相信这是正确的问题:
https://github.com/Microsoft/TypeScript/issues/5594
和相应的错误修正https://github.com/Microsoft/TypeScript/pull/5648,它在TS 1.8主分支中合并 .
我通过在TS @ next(版本1.8.0-dev.20151216)中运行代码来验证它: