Javascript Web包包和TypeScript生成错误的全局变量格式

Javascript Web包包和TypeScript生成错误的全局变量格式,javascript,module,typescript,webpack,Javascript,Module,Typescript,Webpack,我使用带有CommonJS模块输出和webpack的TypeScript创建浏览器捆绑包,在webpack中使用libraryTarget:'var'以便我的库可用作全局变量“Foo”。但是,全局变量不是我的默认导出类,而是一个包装器,我必须调用new Foo.default()来实际实例化我的默认导出类 下面是一个最小的TypeScript示例: export default class Foo {} 编译后,这将是简单的JS结果: var Foo = (function () {

我使用带有CommonJS模块输出和webpack的TypeScript创建浏览器捆绑包,在webpack中使用
libraryTarget:'var'
以便我的库可用作全局变量“Foo”。但是,全局变量不是我的默认导出类,而是一个包装器,我必须调用
new Foo.default()
来实际实例化我的默认导出类

下面是一个最小的TypeScript示例:

export default class Foo {}
编译后,这将是简单的JS结果:

var Foo = (function () {
    function Foo() {
    }
    return Foo;
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = Foo;
相关webpack.config.js部分:

output:
    {
        library: 'Foo',
        libraryTarget: 'var'
    }
现在,当将bundle包含在
标记中时,我可以从调试器中看出全局变量
Foo
是一个包装器,而
Foo
的构造函数实际上是属性
default
,因此我需要调用:

var foo_instance = new Foo.default();
但我希望是:

var foo_instance = new Foo();
我已经发现,如果我在TS编译输出中将行
exports.default=Foo
更改为
module.exports=Foo
,那么我可以调用
new Foo()
,正如我所期望的那样


那么,如何正确使用webpack,使我的构造函数不被包装在
default
属性中呢?

我希望您使用的是Babel。 所以你的问题是巴别塔6中的默认行为。它不再导出默认的
模块。再导出

请查看以下Babel插件:


投反对票,因为问题标题明确指出我使用的是TypeScript,而不是Babel。