打字稿将ES6模块合并到具有一致类型的库中

时间:2017-10-24 14:08:23

标签: typescript es6-modules es6-module-loader

我面临的问题如下:

我想将多个模块合并到一个库中。以下代码显示了我的方法:

  

./ 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模块是如何工作的。有没有人建议修复或绕过这个问题?

0 个答案:

没有答案