• 规范你的Typescript注释,一步一步教你生成API文档


    话说近年来typescript作为javascript的第二语言越来越流行,听说你是TS高手,但是你的TS注释规范吗?

    规范的TS注释不仅能说明代码意图、直接生成API文档,还能为IDE工具提供更智能的提示:

    如图所示,调用即将被废弃的substr(0)方法会自动加上删除线。

    JSDoc

    JSDoc是Javascript注释规范标准,Typescript出现之后,虽然JSDoc也一直在兼容TS,但无奈这2种语言一种是弱类型,一种是强类型,注释对它们的意义大相径庭,所以JSDoc并不适合TS使用。

    JSDoc语法没有严格规定,而是从特定实现的行为中推断出来的。大多数标准 JSDoc 标签都专注于为纯 JavaScript 提供类型注释,这对于 TypeScript 等强类型语言来说不是主要关注点。

    TSDoc

    于是Typescript东家就联合了一些社区组织,推出了TS注释规范标准:TSDoc。

    export class Statistics {/** * Returns the average of two numbers. * * @remarks * This method is part of the {@link core-library#Statistics | Statistics subsystem}. * * @param x - The first input number * @param y - The second input number * @returns The arithmetic mean of `x` and `y` * * @beta */public static getAverage(x: number, y: number): number {return (x + y) / 2.0;}
    } 
    
    • 1
    • 2

    TSDoc 列出了如下目标:

    • 专为 TypeScript 设计:同时尽可能与我们熟悉和喜爱的 JSDoc 符号保持一致。
    • Markdown 集成:文档注释可以为富文本元素(例如粗体、代码围栏、标题、表格等)。
    • 通用核心:通用标签,例如@param@returns将在所有工具中具有一致的行为。
    • 可扩展:每个工具都可以用自定义标签来补充核心标签,用于专门的场景。
    • 互操作性:TSDoc 标准保证不受支持的自定义标签不会干扰其他内容的解析。TSDoc 还消除了 Markdown 的歧义。
    • 多包支持:许多团队发布了一组 NPM 包,这些包可以一起工作并作为一组记录。
    • 开放标准:TSDoc 是一个开源、社区驱动的标准。我们鼓励您贡献自己的想法和拉取请求。

    TSDoc的一些常用标签大家可以直接查看官网…

    TSDoc解析器

    需要注意的是,TSDoc只是一个格式标准,东家另外提供了一个开源的TS代码注释解析器:@microsoft/tsdoc

    API信息提取器

    @microsoft/tsdoc也只是一个注释语法解析引擎,并不能干具体的活,比如提取API信息、统计报告、注释检查、文档生成等等。

    官方推荐了一个封装好的第三方库:api-extractor,该库可以:

    • 提取 API 信息 - 为您的每个项目生成一个“文档模型”JSON 文件。此 JSON 文件包含提取的类型签名和文档注释。
    • API 报告 - 跟踪您项目主要入口点的所有导出,并生成一份报告,用作 API 审查工作流程的基础。
    • 合并类型文件 - 类似于Webpack可以将所有 JavaScript 文件“汇总”到单个包中以进行分发,API Extractor 可以将您的 TypeScript 声明汇总到单个 .d.ts 文件中。

    api-extractor官网api-extractor.com/

    个人感觉api-extractor有个特别爽的地方是可以统计API信息、检查注释规范,并给出各种warning。 比如有一个忘了加注释@public的类型,被某个加了@public的类型间接引用,此时它会贴心的提醒你忘了加@public注释。

    使用方法

    1.npm install @microsoft/api-extractor
    2.建立配置文件:api-extractor.json
    3.先执行 tsc 命令为项目生成 d.ts 类型文件
    4.然后执行 api-extractor run 命令。该命令会提取 d.ts 中的注释信息,生成一个JSON文件。

    详细配置说明请查其看官网,在此不多说…

    文档生成器

    将API信息提取为JSON之后,还不够,我们还需要根据这个JSON文件来生成具体的文档。

    • api-documenter 是一个简单的文档生成器,它可以根据api-extractor生成的JSON文件进一步生成markdownyaml格式的文档。

    使用方法

    1.npm install @microsoft/api-documenter
    2.执行 api-documenter markdown 可生成 markdown 格式文档
    3.执行 api-documenter yaml 可生成 yaml 格式文档

    详细命令参数可查看:

    站点生成器

    好了,现在你生成了一堆API的markdown文档,下一步你可能需要打造API站点。

    markdown生成站点的工具就有很多了,比如

    具体使用方法请查看官网…

    检查注释规范

    为了防止你的TSDoc注释不符合规范,或者标签写错了,官网还贴心的提供了eslint-plugin-tsdoc

    安装和配置方法:github.com/microsoft/t…

    TypeDoc

    以上一顿操作下来,感觉有些繁琐,有没有更简洁的方法一步到位生成API站点呢?

    有,比如:TypeDoc,它集成了API信息提取、文档生成、站点生成:

    TypeDoc也是TSDoc标准的参与者,TypeDoc可以完全兼容TSDoc标准,但比TSDoc更宽松,这意味着TypeDoc可以使用更多非标准的标签。

    TypeDoc默认提供了一套API站点的简洁主题,当然你也可以修改和定制。它供了两种途径:

    • 主题,主题会覆盖 API 文档的默认呈现方式
    • 插件,插件可以进行其他更改

    使用方法

    1.npm install typedoc
    2.配置typedoc.json
    3.执行命令:typedoc --out api src/index.ts 生成API站点

    也可以执行命令:typedoc --plugin typedoc-plugin-markdown --out api src/index.ts --hideSources --theme markdown 生成 markdown 文件

    范例

    最后提供本人一个使用TSDoc的实际项目:

    好了,先讲到这里,相关内容资源比较分散,外链较多,记得点赞收藏哦o

  • 相关阅读:
    你的GPU能跑Llama 2等大模型吗?用这个开源项目上手测一测
    UVM之TLM port基础
    高速高精运动控制,富唯智能AI边缘控制器助力自动化行业变革
    2022数据结构习题(知产)
    【OceanBase概念】国产数据库OceanBase的那些事儿(1)初识OceanBase
    2D人体姿态估计 - DeepPose
    备赛笔记:神经网络
    vue实战-路由传递参数
    C++算法 —— 贪心(1)介绍
    RTOS 中 Task 之间资源共享示例
  • 原文地址:https://blog.csdn.net/web22050702/article/details/126889589