开发工具文档【免费下载链接】typedocDocumentation generator for TypeScript projects.项目地址https://gitcode.com/gh_mirrors/ty/typedoc点击查看免费下载本文围绕 TypeDoc 的三个文档注释标签inline、inlineType与preventInline展开说明它们如何控制 TypeDoc 在生成文档时把被引用的类型别名/接口展开成字面量类型还是保留为带链接的类型引用。读完本文你将掌握三个标签的适用位置修改器标签 vs 块标签、内联的判定优先级与继承规则以及从源码层面理解 TypeDoc 内联转换的实现链路shouldInline判定、withScope作用域传递、convertTypeInlined展开逻辑与实际限制边界。三个标签的定位与适用场景当文档中某个参数的类型是类型别名type alias或接口时TypeDoc 默认会把该类型渲染为一个指向其定义处的引用reference读者需要跳转才能看到内部结构。如果你希望结构直接摊开在引用处或者恰恰相反想阻止某个被全局内联的类型在特定位置展开就需要这三个标签标签标签种类作用范围作用对象inlineModifier修改器标签加在被引用的类型自身上影响该类型的所有引用处类型别名、接口inlineTypeBlock块标签加在引用方如函数的注释上只影响该声明内的引用任意带注释的声明preventInlineBlock块标签加在引用方的注释上覆盖全局的inline已被inline或inlineType内联的类型在 TypeDoc 的标签注册表中可以确认这一分类inline被列入modifierTags列表而preventInline与inlineType被列入tsdocBlockTags列表见 tsdoc-defaults.ts 与 tsdoc-defaults.ts。这意味着inline无需参数、附着在声明的 modifier 集合上后两者则以标签 类型名的块标签形式出现需要指定要操作的目标类型名不带类型参数。inline让类型在每一处引用点被展开inline标签可以放置在类型别名和接口上。当一个被标注了inline的类型被引用时TypeDoc 会尝试把被引用的类型内联到引用处即像你在源码里直接写开了结构一样。例如/** * inline */ export type HelloProps { /** Name property docs */ name: string; }; /** * Hello component - HelloProps will be inlined here as * if you had written Hello(props: { name: string }) */ export function Hello(props: HelloProps) { return spanHello {props.name}!/span; }在Hello函数的文档中props的类型会直接显示为{ name: string }及其属性注释而不是一个指向HelloProps的链接。使用inline的限制与注意事项并非所有类型都能内联某些情况下带类型参数的类型引用type references with type parameters无法被内联——从源码结构看types.ts 中referenceConverter明确判断如果节点带有typeArguments则忽略inline因为从node.typeName取出的类型无法解析这些实参。非对象字面量/联合/交叉/字面量类型的展开可能是猜测TypeDoc 对非 object literal、union、intersection 或 literal 形状的类型无法保证内联结果准确。如果inline错误地转换了某个类型官方文档建议提交 bug 报告。注意原文档强调如果把这个标签应用到常用类型上可能会显著增大生成的文档体积——因为该类型的注释会在每一个引用处被重复内联。底层实现内联判定的优先级内联决策集中在Context类的shouldInline方法中见 context.tsshouldInline(symbol: ts.Symbol, name: string): boolean { if (this.preventInline.has(name)) return false; if (this.inlineType.has(name)) return true; return this .getComment(symbol, ReflectionKind.Interface) ?.hasModifier(inline) ?? false; }由此可以确认判定优先级为preventInline拒绝 inlineType强制 被引用类型自身的inline修改器。三个集合inlineType、preventInline在Context中声明为会被withScope继承的字段见 context.ts即块标签的作用域会沿转换作用域向下传递。inlineType在单个位置选择性内联inlineType是块标签用于只在某一处内联一个类型引用而不影响该类型的其他引用点。使用时应指定类型名不带类型参数export type HelloProps { name: string; }; /** * Hello component - HelloProps will be inlined here as * if you had written Hello(props: { name: string }) * inlineType HelloProps */ export function Hello(props: HelloProps) { return spanHello {props.name}!/span; }对比inline的差异inline修改的是被引用类型的定义全局生效inlineType修改的是引用它的声明局部生效。这在同一个 props 类型在大多数地方保持链接引用、但某个核心 API 处希望直接展示结构的场景中非常有用。preventInline阻止已被内联的类型再展开preventInline块标签用于指示 TypeDoc不要内联某个已被inline或inlineType内联的类型/** * inline */ export type HelloProps { /** Name property docs */ name: string; }; /** * Hello component - HelloProps will NOT be inlined here * preventInline HelloProps */ export function Hello2(props: HelloProps) { return spanHello {props.name}!/span; }需要注意一个硬性前提TypeDoc 能否恢复为类型引用取决于 TypeScript 编译器本身是否产出了一个命名的类型引用。从源码看types.tsconvertType路径下内联是在拿到具名symbol之后才通过shouldInline分叉的但如果 TypeScript 一开始就没有产出命名引用例如某些被编译器直接展开的别名preventInline无法阻止展开。换言之如果你移除inline后类型仍被内联那preventInline也救不了它——这是 TypeScript 类型系统层面的行为不是 TypeDoc 能控制的。源码实现链路从注释到内联类型节点结合仓库源码完整的内联转换链路如下注释解析阶段块标签preventInline/inlineType作为blockTags存入注释模型inline则作为 modifier 附着在类型声明上。作用域传递Context.withScope()在切换到子声明如函数体、类成员时复制当前的preventInline/inlineType集合并从该 scope 注释的blockTags中追加新的条目见 context.ts。这解释了为什么块标签的作用域是当前声明及其内部而不是全局。引用转换阶段当转换TypeReference节点时types.ts 的convert与convertType两个入口都会调用context.shouldInline(symbol, name)命中则走convertTypeInlined。内联展开convertTypeInlined 按类型形状分别处理——联合类型生成UnionType、交叉类型生成IntersectionType、字面量生成LiteralType、数组生成ArrayType、元组走 tuple 转换器其余情况回退到typeLiteralConverter展开为类型字面量。这也印证了原文档所说对象字面量、联合、交叉、字面量这几类形状最可靠的表述。测试用例佐证仓库内置的行为测试完整覆盖了上述三个标签输入文件为 inlineTag.ts断言位于 behavior.c2.test.tsinline在 TypeNode 上生效type Foo { inlined: true }被标注inline后foo(param: Foo)的参数类型在文档中渲染为{ inlined: true }嵌套场景Recordstring, Foo渲染为Recordstring, { inlined: true }。preventInline覆盖inlinebar2方法标注preventInline Foo后Recordstring, Foo保持引用形式不展开。inlineType选择性内联Bar未标注inline但selectiveInline(bar: Bar)标注inlineType Bar后该处参数类型渲染为{ inlined: false }。带类型参数时inline被忽略测试文件中/** inline */ type ComplexT { real: T; imag: T }与genericInlineT(): ComplexT的组合用于验证泛型引用不会被内联与 types.ts 中有 type arguments 时忽略 inline的实现一致。一个细节测试文件中Class.baz同时标注了preventInline Foo和preventInline Complex说明块标签可以重复使用来排除多个类型。与expand系列标签的区别inline系列操作的是类型引用的展示形态引用 vs 字面量展开而expand系列标签处理的是类型结构的展开层级如expandType展开嵌套的引用。两者正交可以组合使用inline决定这个别名要不要摊开expand决定摊开后内部嵌套的引用展开几层。小结需要所有引用处都展开某个别名/接口 → 在该类型定义上加inline只需要某一处展开 → 在引用方声明上加inlineType 类型名需要取消某处的展开→ 在引用方声明上加preventInline 类型名前提是 TypeScript 本身产出了命名引用内联判定优先级为preventInlineinlineTypeinline块标签作用域随转换作用域继承慎用inline标注高频类型文档体积会随引用次数成倍膨胀。赞分享开发工具文档【免费下载链接】typedocDocumentation generator for TypeScript projects.项目地址https://gitcode.com/gh_mirrors/ty/typedoc点击查看免费下载相关推荐TypeDoc 展开标签深度解析expand、expandType 与 preventExpand 如何控制类型引用的文档展示TypeDoc 展开标签深度解析expand、expandType 与 preventExpand 如何控制类型引用的文档展示 TypeDoc 在渲染文开发工具文档TypeDoc 标签体系详解TypeScript 项目文档注释中的 Block、Modifier 与 Inline 标签TypeDoc 标签体系详解TypeScript 项目文档注释中的 Block、Modifier 与 Inline 标签 TypeDoc 允许开发者在 JSD开发工具文档Omi组件类型定义TypeScript接口与类型别名Omi组件类型定义TypeScript接口与类型别名 在前端开发中组件化是提高代码复用和维护性的重要手段。Omi作为一款现代前端框架提供了丰富的组件类型定前端Web框架UI组件上一篇ebook2audiobook企业版功能详解高级管理与部署特性介绍下一篇终极指南如何用TransmittableThreadLocal和Spring Boot Actuator实现线程上下文监控创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Atlas 300V部署YOLO全攻略:从硬件选型到OM转换避坑指南 提到atlas,这两年做AI部署的朋友应该不陌生。尤其是“atlas部署yolo”“atlas 300v 24g 是运算加速卡吗”这类问题,几乎每周都会在群里看到。我去年陆续在好几台机器上折腾过Atlas 300V系列的推理卡,从驱动装到模型转换再到YOLO落地上线&… · 2026/9/25 5:08:08
Atlas 300V推理加速卡部署YOLO全攻略:从环境配置到性能优化 Atlas 这个标签,在AI圈子里近年来热度一直不减,但很多刚接触的人其实第一反应是懵的。它到底是服务器上的训练卡?还是边缘盒子里的推理芯片?为什么总有人问“Atlas 300V 24G是不是运算加速卡”?又为什么部署YOLO的时候… · 2026/9/25 5:08:08
Multisim14.2仿真参数的修改 目录:
1、放大倍数的修改
2、Uc的电压计算
3、Multisim仿真
4、实际测试 1、放大倍数的修改
▼在仿真输出电容短路时,对静态工作点影响的电路时,需要修改三极管的放大倍数,如下图。 下面我们修改2N3904的放大倍数。 其他参数… · 2026/9/25 5:08:02
Neo4j社区版Windows zip包部署与实战指南 简介:面向后端开发、数据建模工程师及图数据库初学者,压缩包提供 Neo4j 5.23.0 官方中文社区版 Windows 安装资源,可用于本地快速部署图数据库系统,支撑社交网络、知识图谱、推荐系统等复杂关系场景的存储、深度查询与可视化分析。… · 2026/9/25 5:34:49
jc 项目 http-headers 解析器:把 HTTP 请求/响应头转换为结构化 JSON 开发工具 【免费下载链接】jc CLI tool and python library that converts the output of popular command-line tools, file-types, and common strings to JSON, YAML, or Dictionaries. This allows piping of output to tools like jq and simplifying automation scripts.… · 2026/9/25 5:34:49
Ariakit Sliding Menu 实战:用 CSS Scroll Snap 实现可横滑的嵌套子菜单 UI组件前端 【免费下载链接】ariakit Toolkit with accessible components, styles, and examples for your next web app 项目地址: https://gitcode.com/gh_mirrors/ar/ariakit 点击查看 免费下载 本篇围绕 Ariakit 官方的 Sliding Menu 示例展开,讲解… · 2026/9/25 5:34:49
MFC对话框集成SQLite:从配置到调优的完整实践 简介:针对MFC开发者,这份示例工程演示了在VS2010对话框应用中集成SQLite3数据库的完整流程,涵盖添加、删除、修改与查询操作,其中特别展示了基于回调函数的查询方式及同步/异步处理思路,适合初学者快速上手。压缩包共3… · 2026/9/25 5:34:42
Swagger Codegen 整型枚举模型深度解析:以 Java rest-assured 客户端中的 `Ints` 为例 开发工具代码生成API设计 【免费下载链接】swagger-codegen swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. 项目地址: http… · 2026/9/25 5:34:42
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37