打字稿声明:模块检测和命名空间

typescript declaration: module detection and namespace

我正在尝试为 h3 编写声明文件。请看函数reference.

首先,我不确定打字稿是如何检测定义文件的。

它检测到我的定义,如果放在文件夹 /src/@types/<any filename>.d.ts 上,内容如下

declare module 'h3-js' {
    export type h3ToGeoBoundary = any;
    ...
}

但是,我也看到你可以创建一个像 /src/@types/h3-js/index.d.ts 这样的文件夹,但是如果写成

它不会检测定义
export = h3;
export as namespace h3;

declare namespace h3 {
  export type h3ToGeoBoundary = () => void; // TODO: correct types
}

哪个有效并不重要,但我不确定如何使用第一种方法导出命名空间。这样,我得到错误 Property 'h3ToGeoBoundary' does not exist on type 'typeof import("h3-js")'.

请帮助制作一个最小文件,并为 h3ToGeoBoundary 导出工作,以便我可以进一步扩展。

由于模块只是导出一堆函数,您可以将它们定义为单独的导出(使用您的第一种方法):

declare module "h3-js" {
  export function h3ToGeoBoundary(): void;
}