网站搜索

如何以编程方式生成一个 TypeScript 声明文件,该文件仅包含输入文件及其导入中使用的类型?


我想使用 ChatGPT 来生成代码,但在处理大型代码库时很难提供必要的上下文。我使用 Typescript,希望能找到一种工作流程,让我能够快速在提示中提供相关类型,以提供足够的上下文。

有没有一种编程方式可以生成一个 Typescript 声明文件,其中包含给定 Typescript 文件及其导入模块中使用的所有类型?

  • 假设你正在一个已有的项目中工作,其中可能有与此相关也可能无关的其他文件。
  • 生成的文件应使用 tree shaking 仅包含相关类型,以最小化上下文。
  • 它应该生成一个单一的文件(更容易在提示中提供给 ChatGPT),该文件包括文件的类型以及文件的依赖项,包括 node_modules 中的依赖项

答案#1

你似乎正在查找 https://api-extractor.com/

它是 Webpack 的类比,但用于类型定义

在 https://api-extractor.com/pages/overview/demo_rollup/ 查看输出示例

答案#2

tsc MyFile.ts --declaration --emitDeclarationOnly --outFile out.d.ts

这将递归扫描 MyFile.ts 的所有导入以及其导入的所有文件。并将所有声明输出到 out.d.ts。

或者你可以编辑 tsconfig.json 或创建一个新的,只包含一个文件,例如 "files": [ "./main.ts" ],然后使用命令

tsc -project tsconfig.alldts.json  --declaration --emitDeclarationOnly --outFile all.d.ts

这种方法更好,因为可以使用特定的其他设置,而不需要每次都指定它们。(例如,影响如何处理 null/undefined 类型的严格性设置)。

(这种方法也可以用于生成仅包含 main.ts 或您应用的其他某些文件的 .js 文件。)