在手写的d.ts文件中,如何从模块根目录中的一个命名空间公开函数?

我正在开发一个全部使用 javascript 但导出手写类型声明(automerge/index.d.ts)的存储库。

代码库的结构是它有一个 Frontend 和一个 Backend,加上一个公共 API,除了直接从 Frontend 和 Backend 重新导出一些函数外,还提供了一些自己的便利功能。

像这样的东西:

declare module `foo` {

  // functions that only exist in the public API
  function a
  function b
  function c

  // functions exposed directly from namespace A
  function q
  function r
  function s

  // functions exposed directly from namespace B
  function x
  function y
  function z

  namespace A {
    function q
    function r
    function s
    function t
  }

  namespace B {
    function v
    function w
    function x
    function y
    function z
  }

}

这是实际代码的摘录,显示了我们当前如何为重新导出的函数编写重复声明。

declare module 'automerge' {
  ...

  function getObjectById<T>(doc: Doc<T>, objectId: OpId): Doc<T>
  
  namespace Frontend {
    ...

    function getObjectById<T>(doc: Doc<T>, objectId: OpId): Doc<T>
  }

  ...
}

有没有办法避免两次编写这些声明?

以上是在手写的d.ts文件中,如何从模块根目录中的一个命名空间公开函数?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>