如何从d.ts中提取指定类型生成新d.ts文件,如提取Zod推断的Job类型
类型提取解决方案
方案1:手动快速提取(适配少量类型场景)
- 打开原项目中定义
Job类型的TS文件,确保项目无类型编译错误 - 鼠标悬停在
Job类型名上,VSCode会自动展示Zod推断完成的完整类型定义,点击类型旁的展开按钮可查看全量结构,示例如下:
type Job = { jobName: string; startAfter: Date; retry?: boolean; retryAfter?: Date; runCount?: number; data?: Record<string, any>; status?: "ready" | "running" | "finished"; }
- 直接复制该类型定义到新项目的类型文件中即可使用,无额外依赖。
提示:该方案操作成本极低,仅适合1-5个以内的零散类型提取需求。
方案2:api-extractor自动生成精简声明(适配多类型/定期更新场景)
如果需要批量提取类型或者定期同步更新,可通过自动化工具实现:
- 原项目新增单独的导出入口文件,仅对外暴露你需要的目标类型:
// export-entry.ts export type { Job } from './你的Job类型定义文件路径'
- 调整原项目
tsconfig.json配置,开启声明文件生成:
{ "compilerOptions": { "declaration": true, "emitDeclarationOnly": true, "outDir": "./temp-dts" } }
- 运行
tsc生成临时声明文件后,用api-extractor扫描入口文件,工具会自动过滤掉所有未导出的内部类型、Zod相关依赖类型,仅保留你指定导出的Job类型,最终生成单文件精简声明,体积远小于全量导出的d.ts文件。
方案3:ts-morph自定义脚本提取(适配高度定制化场景)
如果有特殊的类型转换、过滤需求,可以自定义小脚本实现提取逻辑:
- 安装
ts-morph依赖 - 编写脚本加载原项目的TS配置,定位到
Job类型的定义节点,直接输出其解析后的完整类型文本到目标文件,全程可自定义处理逻辑。
内容的提问来源于stack exchange,提问作者Hari Prasad
相关产品推荐
相关产品推荐

