TypeDoc 中 @privateRemarks 标签实战:给 API 注释留“不公开的实现备注”

发布时间:2026/9/25 14:48:13

TypeDoc 中 @privateRemarks 标签实战:给 API 注释留“不公开的实现备注” 开发工具文档【免费下载链接】typedocDocumentation generator for TypeScript projects.项目地址https://gitcode.com/gh_mirrors/ty/typedoc点击查看免费下载privateRemarks是 TypeDoc 支持的 TSDoc 标准块级标签用于在文档注释中书写仅供维护者查看、且不会出现在生成 API 参考中的文字。本文基于 TypeDoc 仓库的 标签文档 与 源码实现 展开讲清它的写法、TypeDoc 默认将其剔除的底层机制以及自定义--excludeTags时必须注意的坑并展示该标签在 TypeDoc 自身源码中的真实用法。一、什么是 privateRemarksprivateRemarks属于Block块级标签标签总表见 tags.md其规范来源是 TSDoc 标准。它的用途很明确用来包含那些不应出现在生成的 API 参考中的文档文字。典型场景是团队内部约定给某个 API 写上实现细节、临时说明、已知局限等这些信息对阅读源码的开发者有价值但对外部 API 使用者是噪音。privateRemarks就是把这些内容“藏”在文档注释里的标准位置。TypeDoc 对 TSDoc 的态度是“兼容但不强制”——它应能解析几乎所有 TSDoc 合规的注释但并不要求你的注释严格遵循标准见 TSDoc Support。privateRemarks是 TSDoc 块级标签之一在 TypeDoc 内部的 tsdoc-defaults.ts 中被明确列入tsdocBlockTags列表与defaultValue、deprecated、example、param、remarks、returns、see、throws、typeParam等并列。二、怎么写完整示例官方文档给出的示例如下继承自 site/tags/privateRemarks.md/** * Some docs here * * privateRemarks * Implementation detail notes not useful to the API consumer */ export function rand(): number;要点privateRemarks作为块级标签放在注释体内、独立成段其后每一行都属于该标签的内容直到下一个块级标签或注释结束标签前面的正文Some docs here会正常渲染到 API 文档中标签块内的文字默认不会出现在生成的文档页面里。标签内容同样支持 TSDoc 注释中允许的 markdown 片段TypeDoc 把大部分注释解析委托给其 markdown 解析器见 TSDoc Support因此备注中可以写多行文字、列表等写法上与remarks完全一致。三、为什么默认不显示excludeTags 机制privateRemarks被隐藏不是特判逻辑而是由excludeTags选项的统一机制实现的。3.1 默认的排除列表TypeDoc 在 defaults.ts 中定义了excludeTags选项的默认值export const excludeTags: readonly TagString[] [ override, virtual, privateRemarks, satisfies, overload, inline, inlineType, ];privateRemarks就在其中——这就是“TypeDoc 默认把该标签从文档中剔除”的直接出处。3.2 剔除发生在注释处理阶段选项定义位于 typedoc.tsname: excludeTags, help: () i18n.help_excludeTags(), defaultValue: OptionDefaults.excludeTags, validate: makeTagArrayValidator(excludeTags),选项帮助文本在各语言本地化文件中给出例如 en.ts 中为 Remove the listed block/modifier tags from doc comments从文档注释中移除列出的块级/修饰符标签。真正执行剔除的是转换器插件 CommentPlugin。它通过Option(excludeTags)注入该选项第 124-125 行并在每个声明/签名反射创建时调用removeExcludedTags第 341 行private removeExcludedTags(comment: Comment) { for (const tag of NEVER_RENDERED) { comment.removeTags(tag); comment.removeModifier(tag); } for (const tag of this.excludeTags) { comment.removeTags(tag); comment.removeModifier(tag); } }从源码结构看剔除发生在转换conversion阶段标签被从Comment对象中移除后后续的序列化、渲染环节根本看不到它因此它不会进入 JSON 输出也不会被默认主题渲染。另外注意NEVER_RENDERED常量type、typedef等纯 JS 类型提示类标签是无条件剔除的而excludeTags是用户可配置的剔除列表——privateRemarks属于后者。四、注意自定义 --excludeTags 时必须保留 privateRemarks官方文档 site/tags/privateRemarks.md 的 “TSDoc Compatibility” 一节强调TypeDoc will omit this tag from the documentation by default,but the user is responsible for including it in the--excludeTagslist if it is set.TypeDoc 默认会省略该标签但如果用户设置了excludeTags则需要用户自行将其列入。原因是选项覆盖语义一旦你通过命令行--excludeTags或配置文件中的excludeTags指定了新列表新的列表会整体替换默认值默认列表中的override、virtual、satisfies、overload、inline、inlineType以及privateRemarks都不再自动生效。如果你的意图只是额外排除某几个标签正确做法是在自定义列表中带上原默认项例如// typedoc.json { excludeTags: [ override, virtual, privateRemarks, satisfies, overload, inline, inlineType, myCustomInternalTag ] }反过来TSDoc Support 也说明privateRemarks“可以被配置为包含在文档中”——即如果你就是想让这些备注展示出来把privateRemarks从excludeTags中移除或干脆使用不含它的自定义列表即可它便会像普通块级标签一样以标题形式渲染。选项的完整说明见 options/comments.md。五、真实用法TypeDoc 源码自己就在用最有说服力的例子是 TypeDoc 自身代码库里对privateRemarks的使用——它正是“写在 API 表面、但不想随文档发布”的实现备注。例如 ReflectionSymbolId/** * This exists so that TypeDoc can store a unique identifier for a ts.Symbol without * keeping a reference to the ts.Symbol itself. ... * * privateRemarks * The ReflectionSymbolId class instance should be treated as immutable. All properties must * be marked readonly to assist with this. */ export class ReflectionSymbolId { ... }类注释主体解释了它“是什么、为什么存在”会对外展示而privateRemarks里的“实例应视为不可变”是纯内部约定不对外展示。类似的用法还出现在Context.createSymbolReference / createSymbolId备注说明“这些方法放在 Context 上是为了让 typedoc-plugin-missing-exports 可以 monkey-patch”ReflectionSymbolId.fileName备注说明“typedoc-plugin-dt-links 用这个路径去读取 DefinitelyTyped 包的源码”以及 GroupPlugin、types.ts、events.ts 等文件中的同类备注。这些例子展示了推荐的使用姿势privateRemarks的读者是读源码的同事而不是读 API 文档的用户。六、与 remarks、hidden 的边界区分容易混淆的三个标签定位不同标签类型是否展示作用对象remarksBlock展示默认主题下以# Remarks标题渲染把总结与长文说明分段使用{inheritDoc}时会被复制privateRemarksBlock默认不展示列入默认excludeTags存放仅维护者可见的备注hiddenModifier标签本身不作为文本展示隐藏整个符号整个 reflection 被移除而不仅仅是备注文字关键区别privateRemarks只丢弃“备注这一块内容”符号本身及其其余文档照常生成hidden则是把整个 API 条目从文档中拿掉。若你想隐藏的是“带internal标注的内容”则配合excludeInternal选项其机制见 defaults.ts 中各默认值与 CommentPlugin 的isHidden判定。顺带一提在中文本地化中该标签的标题被翻译为“私有备注”见 zh.ts 中的tag_privateRemarks: 私有备注——当它未被排除而渲染出来时中文文档中会显示该标题。七、小结privateRemarks是 TSDoc 标准块级标签用于书写不进入 API 参考的内部备注TypeDoc 通过excludeTags选项的默认值defaults.ts将其剔除剔除动作由 CommentPlugin 在转换阶段完成一旦你自定义了--excludeTags默认值被整体替换必须自行把privateRemarks保留在列表中否则备注会泄漏到文档中该标签的受众是读源码的人TypeDoc 自身在 ReflectionSymbolId、Context 等处大量使用可作为写法范例。相关文档remarks标签、excludeTags选项、TSDoc 支持说明、标签总表。赞分享开发工具文档【免费下载链接】typedocDocumentation generator for TypeScript projects.项目地址https://gitcode.com/gh_mirrors/ty/typedoc点击查看免费下载相关推荐终极TypeDoc注释标签指南掌握50JSDoc和TSDoc标签的完整技巧终极TypeDoc注释标签指南掌握50JSDoc和TSDoc标签的完整技巧 TypeDoc是TypeScript项目的文档生成工具能够将代码中的注释转换为开发工具文档TypeDoc 的 JSDoc 注释兼容机制jsDocCompatibility 选项与 JSDoc 类型标签的实现原理TypeDoc 的 JSDoc 注释兼容机制jsDocCompatibility 选项与 JSDoc 类型标签的实现原理 本文以 TypeDoc 官方文档 J开发工具文档TypeDoc 标签体系详解TypeScript 项目文档注释中的 Block、Modifier 与 Inline 标签TypeDoc 标签体系详解TypeScript 项目文档注释中的 Block、Modifier 与 Inline 标签 TypeDoc 允许开发者在 JSD开发工具文档上一篇动物森友会岛屿设计终极指南用Happy Island Designer打造你的梦幻小岛下一篇一键解决Windows更新问题的终极免费工具Script-Reset-Windows-Update-Tool完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/25 14:48:13

嵌入式固件升级机制全解析:从Bootloader到双备份

搞嵌入式这些年,经手过的驱动板卡少说也有几十种:液晶屏驱动板、步进电机驱动板、工业IO控制板、电源管理板,形态各异,但有个共同点——它们都绕不开固件升级。我见过太多板卡第一次出厂好好的,真正让售后崩溃、让用户…

2026/9/25 14:48:13

DDR5内存的隐藏配电站:PMIC芯片深度解析

最近收了条DDR5内存,拆开散热片的一瞬间,我在PCB中间看到一颗不起眼的小芯片,丝印是某家电源厂的logo。我盯着它看了半天,脑子里蹦出一句:原来你就是那个“隐藏的配电站”。内存条的PMIC(Power Management …

2026/9/25 15:53:16

XXE漏洞从原理到实战:外部实体注入的检测、利用与防御

做了几年安全测试,如果只让我选一个“看起来冷门、实际一打一个准”的漏洞,我大概率会选XXE。很多团队把精力全扑在SQL注入和XSS上,结果某一天扫出个XML外部实体注入,直接懵在原地——这玩意儿到底怎么利用?怎么修复&a…

2026/9/25 15:53:16

RAG+LLM抽取年报AI变量,构建绿色全要素生产率实证模型

简介:面向金融科技与环境经济交叉领域的研究者,项目包演示了基于RAG与大语言模型分析A股上市公司年报的完整流程,旨在量化评估人工智能对企业绿色全要素生产率(GTFP)的影响,并引入融资约束异质性视角开展稳…

2026/9/25 15:48:16

MinIO 接入 OPA:S3 鉴权委托给外部策略引擎的完整指南

MinIO 接入 OPA:S3 鉴权委托给外部策略引擎的完整指南 【免费下载链接】minio MinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license. 项目地址: https://gitcode.com/GitHub_Trending/mi/minio MinIO 鉴权插件…

2026/9/24 20:24:47

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/25 0:02:35

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:02:35

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:02:35

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑