在typescript模块声明中重新导出符号

在typescript模块声明中重新导出符号,typescript,Typescript,我有一个私有JavaScript模块,我希望为它编写类型声明。结构如下所示: . ├── index.d.ts ├── index.js ├── lib │   ├── submodule.d.ts │   └── submodule.js └── package.json 在lib/submodule.d.ts中: declare module 'mymodule/lib/submodule' { class Submodule { // details omitt

我有一个私有JavaScript模块,我希望为它编写类型声明。结构如下所示:

.
├── index.d.ts
├── index.js
├── lib
│   ├── submodule.d.ts
│   └── submodule.js
└── package.json
lib/submodule.d.ts
中:

declare module 'mymodule/lib/submodule' {

    class Submodule {
        // details omitted
    }

    export = Submodule;
}
index.d.ts
中,我需要从
lib/Submodule
重新导出
子模块
类。此外,我需要记录在顶层声明的快捷方式构造函数。以下是我的尝试:

declare module 'mylib' {

    // export a `createSubmodule` function that is just a shortcut for new Submodule()
    import * as Submodule from 'mymodule/lib/submodule';
    function createSubmodule(): Submodule;

    // Also re-export Submodule
    export * as Submodule from 'mymodule/lib/submodule';
}

似乎在
index.d.ts
中找不到
子模块.d.ts
的声明。为导入和导出收到的消息是:
找不到模块“mymodule/lib/submodule”的声明文件。


重新导出这样的符号的正确方法是什么?

我发现我需要做两件事:

  • d.ts
    文件添加内联引用
  • 使用commonjs样式导入
  • 代码变为:

    /// <reference path="./lib/submodule.d.ts" /> // <= reference the path to the dependency
    
    declare module 'mylib' {
        import Submodule = require('mymodule/lib/submodule'); // <= import = require()
        function createSubmodule(): Submodule;
        export * as Submodule from 'mymodule/lib/submodule';
    }
    
    ////