将带有打字稿定义的模块合并到一个模块中

时间:2018-11-06 15:32:34

标签: typescript

我不确定标题是否正确,因此,如果您对下面描述的问题有更好的标题,请编辑一个。

问题。

例如,有两个带有d.ts类型文件的js模块。

模块1:

export interface AInterface {}
export interface BInterface {}

export function a(a: string): AInterface;
export function b(b: string): BInterface;

模块2:

declare function c(c: string): string;
export = c

因此,我需要创建结合了第一模块和第二模块的模块3。在js中,它看起来像:

module.exports = (options) => {
  // do something with options
  return {
    module1: require('./module1'),
    module2: require('./module2'),
  }
}

我需要为模块3编写正确的d.ts文件;

我试图做类似的事情:

import * as module1 from './module1';
import module2 = require ('./module2');

declare namespace module3 {
  interface Module3 {
    module1: module1;
    module2: module2;
  }
}

declare function module3(
  options?: any
): module3.Module3

exports = module3;

但这是不正确的,因为打字稿无法编译并出现错误cannot use namespace <module1|module2> as a type

我已经搜索了此错误,但是我发现的所有解决方案都不适合我应该合并具有不同导出样式的模块的情况。

谢谢。

0 个答案:

没有答案