如何使用Typescript 1.7中的CommonJS模块正确生成ES6目标?
在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); 如您
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主分支中的相应错误修复
我需要它!非常感谢,我确信官方“最新功能”列表中的这一功能是一种保护措施,他们最后测试了它一次,它工作了,所以我确信这是我的错,我对现代模块解析技术一无所知。
// 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