在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
任何提示为何会出现这种奇怪的行为?
答案 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