使用TypeScript生成单个模块的声明文件

13
给定以下文件夹结构:
src/
├── foo.ts
├── bar.ts
├── baz.ts
├── index.ts

foo.tsbar.tsbaz.ts分别导出一个默认的类或对象:例如,在foo.ts的情况下:

export default class Foo {
    x = 2;
}

我们能否自动生成一个声明文件来声明一个名为my-module的模块,并将foo.tsbar.tsbaz.ts作为非默认项导出?

即我希望tsc生成以下内容:

build/
├── foo.js
├── bar.js
├── baz.js
├── index.js
├── index.d.ts

其中index.d.ts包含:

declare module 'my-module' {
    export class Foo {
        ...
    }
    export class Bar {
        ...
    }
    export class Baz {
        ...
    }
}

我看到大多数NPM模块都有这样的声明文件,也许还有一些单独的文件。

我该如何实现这个?


1
这个TypeScript问题是为了生成“扁平化”的声明文件,并提供了一些第三方工具的链接,您可以尝试使用。请问您为什么需要这个?为每个.js文件生成一个.d.ts文件可以很好地找到类型信息,但扁平化的.d.ts文件可能更容易让用户理解,并且可能更容易隐藏您不认为是公共API的元素。 - Matt McCutchen
2个回答

1
在你的tsconfig.json文件中,将"declaration"设置为true。然后当你在项目上运行typescript时,它将自动为你生成声明文件。

8
Johan 询问如何将所有类型声明文件捆绑在一个文件中,而不是生成单独的类型声明文件。 - Jepser Bernardino

0

tsup

它可以做到这一点,并且非常快速(1.5秒):

tsup ./executors/index.ts --dts-only

你需要在./executors/index.ts中导入类型并从这个文件中导出它们。

dts-bundle-generator

对我来说速度较慢(8.5秒):
dts-bundle-generator --out-file dist/testkube-executors.d.ts ./executors/executors.ts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接