我面临的问题如下:
我想将多个模块合并到一个库中。以下代码显示了我的方法:
./ Imports / index.ts :::图书馆
import * as _A from './ModuleA';
export const A = _A;
import * as _B from './ModuleB';
export const B = _B;
./ Imports / ModuleA.ts :::模块A
export class foo {};
./ Imports / ModuleB.ts ::: Module B
export const bar = 10;
./ main.ts :::使用库
import * as Import from './Imports/index'
// this works fine
var bar = Import.B.bar;
var fooInstance = new Import.A.foo();
// but cant use as types
var bar2: typeof Import.B.bar;
var fooInstance2: new Import.A.foo;
问题是,虽然我可以使用该库,但我不能将模块的成员用作类型。
为了使用它们,我必须直接导出模块成员,如下所示:
./ Imports / index2.ts ::: Alternate library
export * from './ModuleA';
export * from './ModuleB';
./ main.ts :::使用库
import * as Import from './Imports/index2'
// this works fine
var bar = Import.bar;
var fooInstance = new Import.foo();
// this works fine
var bar2: typeof Import.bar;
var fooInstance2: new Import.foo;
这里的问题是我可以获得名称冲突,并且它很快就会变得无组织。
我猜问题是ES6模块是如何工作的。有没有人建议修复或绕过这个问题?