在手写的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>
}
...
}
有没有办法避免两次编写这些声明?