如何在Typedoc中展示node_modules外部依赖的类型详情?
解决Typedoc中外部依赖类型别名不展开的问题
问题背景
项目依赖node_modules中的外部包,通过Pick从依赖接口提取属性定义了类型别名MyType,但Typedoc仅显示Pick<SomeInterface, 'propA' | 'propB'>的声明字符串,不展开具体属性结构。因依赖包包含大量无关内容,未将其加入Typedoc的entryPoints。
相关代码:
- 依赖文件
node_modules/dependency/index.d.ts:
export interface SomeInterface { propA: string propB: number propC: string } // 大量无需Typedoc收录的内容
- 项目文件
my-project/index.d.ts:
import { SomeInterface } from 'dependency' export type MyType = Pick<SomeInterface, 'propA' | 'propB'>
当前Typedoc显示效果:
Type alias MyType MyType: Pick<SomeInterface, 'propA' | 'propB'>
期望显示效果:
Type alias MyType MyType: { propA: string propB: number }
可行解决方案
方案1:启用Typedoc的expand配置
在typedoc.json配置文件中添加expand选项,开启工具类型自动展开:
{ "expand": true }
该配置会让Typedoc自动解析Pick、Omit等工具类型的最终结构,无需引入整个依赖包。
方案2:手动展开类型定义
直接在项目中写出MyType的具体结构,绕过工具类型:
export type MyType = { propA: string propB: number }
优点是无需调整Typedoc配置,缺点是后续依赖接口更新时需同步手动修改类型。
方案3:仅引入依赖的目标类型文件
若依赖包的类型拆分到单个文件,可将包含SomeInterface的类型文件单独加入entryPoints,同时排除其他无关内容:
{ "entryPoints": [ "my-project/index.d.ts", "node_modules/dependency/src/some-interface.d.ts" ], "exclude": ["node_modules/dependency/**/*", "!node_modules/dependency/src/some-interface.d.ts"] }
需提前确认依赖包的类型文件结构,确保只引入必要的类型定义。
内容的提问来源于stack exchange,提问作者Khanon
相关产品推荐
相关产品推荐

