# TypeScript 文档注释规范 ::: details 目录 [[toc]] ::: ## 介绍 Typedoc 是一个 TypeScript 语言的文档生成工具。可以根据我们写的 TypeScript 代码,直接生成 API 帮助文档。 参考地址:[https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javadoc.html#CHDJGIJB](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javadoc.html#CHDJGIJB) ## 安装 可安装有全局安装与配置 package.json 文件两种方式。 ### 全局安装 ```shell D:\Project\ts> npm install --global typedoc ``` ### package.json 配置项目的 package.json, 增加 typedoc 的依赖。 ```json{5} { ...... "devDependencies": { ...... "typedoc": "^0.17.7", ...... }, ...... } ``` 在项目文件夹执行如下命令安装 typedoc。 ```shell D:\Project\ts> npm install ``` ## 使用 ```shell D:\Project\ts> typedoc --out docs src ``` ### typedoc 参数 | 参数 | 类型 | 说明 | |:---:|:---:|-----| | out | string | 输出目录 | | module | string | 模块引入方式,可以是 commonjs, amd, system, umd | | target | string | ES3(默认), ES5, ES6 | | name | string | 项目标题 | | theme | string | 皮肤可以是 default or minimal or 一个路径 | | readme | string | readme 文件,markdown 文件的相对地址 | | includeDeclarations | boolean | 是否包含 .d.ts 文件,如果你的项目是 javascript 写的,可以使用声明文件的方式来支持 TypeScript 并生成文档 | | excludeExternals | boolean | 是否排除外部引入的模块 | | excludePrivate | boolean | 是否排除 private 修饰的相关字段方法 | | excludeProtected | boolean | 是否排除 protected 修饰的相关字段方法 | | hideGenerator | boolean | 隐藏页底的全局链接 | | version | boolean | 显示 typedoc 版本 | | help | boolean | 显示帮助信息 | | gaID | string | 如果有 Google Analytics 的跟踪ID,可以设置 | | exclude | string | 排除文件 | | includes | string | 包含文件,应该是一个文件夹的名字,会将下面所有的md文件包含进来(需要使用 [[include:document.md]] 引入) | | media | string | 包含媒体,应该是一个文件夹的名字,会包含文件夹下的图片等各种媒体文件(需要使用 !\[logo](media://logo.png) 引入) | ## 标签 | 标签 | 说明 | 备注 | |:-------------:|---------|----------| | @author | 作者 | 用于类和接口注释。可有零到多个。 | | @deprecated | 废除标志 | 标识过期API(为了保证兼容性,仍可用,但不推荐用)。最多一个。 | | @exception
@throws | 异常描述 | 构造函数与函数注释使用,指示函数会抛出异常。可有零到多个。 | | @param | 方法的参数 | 仅供类、接口、方法注释时使用。同一个注释块可同时出现多个param描述。 | | @return | 返回描述 | 仅供函数注释时使用。除 void 方法外其它所有方法必须有一个 return 描述。 | | @see | 参考描述 | 引用,查看相关的内容,如类,方法,变量等。可有零到多个。 | | @serial
@serialField
@serialData | 序列化描述 | 可有多个。 | | @since | 起始版本 | 只有一个。 | | @version | 版本号 | 用于类和接口注释。零或一个。 | ### @author ---- 可以有多个作者。 **语法:** ``` @author name-text ``` **参数:** * *name-text*    作者。 **示例:** 一个作者 ```typescript {4} /** * 点数据类型定义 * * @author 庞利祥 */ export class SPoint { // } ``` 多个作者 ```typescript {4,5} /** * 点数据类型定义 * * @author 庞利祥 * @author 庞凌峰 */ export class SPoint { // } ``` ### @deprecated ---- 废除标志 **语法:** ``` @deprecated deprecated-text ``` **参数:** * *deprecated-text*    废除的原因。 **示例:** ```typescript{5,14} /** * 点数据类型定义 * * @author 庞利祥 * @deprecated 使用 SPoint 类代替。 */ export class SPointF { /** * 平移点 * * @param dx X 轴位移 * @param dy Y 轴位移 * @deprecated 不在支持 */ translate(dx: number, dy: number): void { this.x += dx; this.y += dy; } } ``` ### @exception 或 @throws ---- 标识函数会抛出异常。 **语法:** ``` @exception class-name description ``` 或 ``` @throws class-name description ``` **参数:** * *class-name*    抛出的异常类。 * *description*    异常描述。 **示例:** ```typescript ``` ### @param ---- 函数入参。 **语法:** ``` @param parameter-name description ``` **参数:** * *parameter-name*    参数名。 * *description*    参数描述。 **示例:** 函数入参 ```typescript {5,6} export class S { /** * 平移矩形 * * @param dx x 轴位移 * @param dy y 轴位移 */ translate(dx: number, dy: number): void { this.x += dx; this.y += dy; } } ``` 构造函数入参 ```typescript {5-8} export class SRect { /** * 构造函数 * * @param x x 轴坐标 * @param y y 轴坐标 * @param width 宽度 * @param height 高度 */ constructor(x: number, y: number, width: number, height: number) { } } ``` 带泛型的函数 ```typescript {4,5} /** * 返回对象的标识符 * * @param 泛型类型 * @param arg 入参 */ function identity(arg: T): T { return arg; } ``` ### @return ---- 函数返回值描述。 **语法:** ``` @return description ``` **参数:** * *description*    返回值描述。 **示例:** ```typescript{5} /** * 旋转变形 * * @param angle 绕 z 轴旋转角度(单位角度) * @return 返回自身 */ rotate(angle: number): SMatrix { ...... return matirx; } ``` ### @see ---- **语法:** ``` @see reference ``` **参数:** * *reference*    参考对象。 **示例:** ```typescript ``` ### @serial 或 @serialField 或 @serialData ---- **语法:** ``` @serial field-description | include | exclude ``` **参数:** **示例:** ```typescript ``` ### @serialField ---- **语法:** ``` @serialField field-name field-type field-description ``` **参数:** **示例:** ```typescript ``` ### @serialData ---- **语法:** ``` @serialData data-description ``` **参数:** **示例:** ```typescript ``` ### @since ---- **语法:** ``` @since since-text ``` **参数:** * *since-text*    起始版本。 **示例:** ```typescript /** * @since 1.0.0 */ export class SObject { // } ``` ### @version ---- 版本号。 **语法:** ```typescript @version version-text ``` **参数:** * *version-text*    版本号。 **示例:** ```typescript{2} /** * @version 2.2.56 */ export class SObject { // } ```