首页 > 其他分享 >jsdoc

jsdoc

时间:2024-07-22 14:29:00浏览次数:10  
标签:string number param Person JSDoc jsdoc name

介绍:JSDoc 3 是一个用于 JavaScript 的API文档生成器,类似于 Javadoc 或 phpDocumentor。可以将文档注释直接添加到源代码中。JSDoc 工具将扫描您的源代码并为您生成一个 HTML 文档网站。

说明:这里介绍的是把注释以一种类型文档的显示 做标注,不是普通的做个 文本描述。所以 JSDoc 的功能 和 typescript 的 类型描述文件的功能差不多。

参考:https://juejin.cn/post/7112831769736380430

一、常规:

  • 可选参数:
    1. @param {type} [p] 可选参数
    2. @param {type=} p 可选参数
    /**
     * demo
     * @param {string} a
     * @param {string} [b] 
     * @param {boolean=} c
     */
    function foo(a, b, c) {}
  • 参数默认值:
    1. @param {type} [p=defaultValue] 参数默认值
    /**  
     * demo * @param {string} a  
     * @param {string} b  
     * @param {boolean} [c=false]  
     */  
    function foo(a, b, c) {}

     

二、复杂的类型 注解:

  • 数组结构:
    当参数为数组时可以做到对其每个元素进行详细描述,格式如下
    /**
     * 数组参数:
     * @param {array} arr 参数描述
     * @param {string} arr[0] 参数描述
     * @param {number} [arr[1]=undefined] 参数描述
     */
  • 对象结构:
    /**
     * demo
     * @param {{name: string, age: number}} a
     * @returns {number}
     */
    function foo(a) {
      return 2;
    }

    上面的这种写法,会让维护者不解其中的意思。一时不知道name和age是什么意思。可以采用另一种描述 Object 中各项的描述,如下【推荐】

    /**
     * demo
     * @param {Object} a
     * @param {string} a.name 回复人的名字
     * @param {number} a.age 回复人的年龄
     * @returns {number}
     */
    function foo(a) {
      return 2;
    }

三、自定义类型:

有些时候我们可能需要使用复用一些结构体,可以使用 JSDoc 封装,如下

/**
 * 包含姓名和年龄的对象
 * @typedef {Object} Person
 * @property {string} name - 姓名
 * @property {number} age - 年龄
 */
/**
 * @type {Person} person
 */
 const person = {
   name: 'steven',
   age: 21
}

说明:自定义类型 类似ts的接口,多个地方复用这个对象类型时。自定义类型就非常好用。

  • 定义方法:定义类型用  @typedef
    /**
     * @typedef {Object} Person
     * @property {string} name how the person is called
     * @property {number} age how many years the person lived
     */

    使用时,直接把定义的类型 当作原生的类型那样使用

    /**
     * @param {Person} p - Description of p
     */
  • 对于值都是相同类型的对象:数组对象中用的应该比较多。
    /**
     * @param {Object.<string, number>} dict
     */
  • 描述函数返回值结构:如果函数返回值是一个普通对象哪个

四、跨文件使用

// ./@types/index
/**
 * 包含姓名和年龄的对象
 * @typedef {Object} Person
 * @property {string} name - 姓名
 * @property {number} age - 年龄
 */
/**
 * @type {Person} Person
 */
// ./t.js
/**
 * @typedef {import('./@types/index').Person}
 */
/**
 * demo
 * @param {Person} a
 * @returns
 */
function foo(a) {
  return 2;
}

 

总结:

JSDoc 在复用这方面,就不如 typescript 好用了,说实话,如果你的项目都需要用到这种类型了,应该尽快考虑是否应该使用 typescriptJSDoc 的生态方面还是比不过 typescript 的,而且两者写法差距蛮大,一旦写得多了,调头比较难。

五、接口:

接口 API 的注释还是挺重要的,如果 JSDoc 能用在这上面还是挺方便的,其示例如下

/**
 * demo
 * @returns {Promise<{data:{name: string, age: number}}>}
 */
function foo() {
  return new Promise((resolve, reject) => {
    resolve({ data: { name: "steven", age: 21 } });
  });
}

 

 

总结:偶尔使用 JSDoc 写点简单的注释还行,但是复杂的项目和类型,JSDoc 和它的生态未必能够撑得住。

 

标签:string,number,param,Person,JSDoc,jsdoc,name
From: https://www.cnblogs.com/wfblog/p/18315837

相关文章

  • JSDoc 注释 和 // 的区别。分别用在什么场景
    JSDoc注释和`//`注释在JavaScript中都用于添加代码说明,但它们的用途和格式有所不同,适用于不同的场景。###JSDoc注释JSDoc是一种标记语言,用于为JavaScript代码添加文档注释。它允许你使用特殊的标签(如`@param`、`@return`)来描述函数的参数、返回值、类、和其他重要信......
  • jsdoc基础
    /***2、函数*@param{string}a-参数1*@param{number}b-参数2*@returns{boolean}-返回值*/constsum=(a,b)=>{returnBoolean(a+b)}/***3、变量*@property{string}a-属性1*@property{111|222}b-属性2*/constobj={......
  • JSDoc语法规范
    JSDoc是JavaScript中用于添加文档注释的一种常见方式。它是一种在注释中使用特定标记和语法来描述代码功能和用法的标准化方式。以下是JSDoc的主要语法规范和常见标记:基本注释语法:/***这里是注释的内容。*/描述块:描述块通常位于函数、方法、类等代码块之前,用于描......
  • jsDOC
    定义函数参数与返回值@param定义参数@returns定义返回类型/***计算两个点位距离*@param{object}p1*@param{number}p1.x*@param{number}p1.y*@param{object}p2*@param{number}p2.x*@param{number}p2.y*@returns{number}返回距离*/co......
  • 有JSDoc还需要TypeScript吗
    这听起来是不是很耳熟:你想写一个小型脚本,不管是为页面、命令行工具,还是其他什么类型。你从JavaScript开始,直到你想起写代码时没有类型是多么痛苦。所以你把文件从.js重命名为.ts。然后意识到你已经打开了一个麻烦的玩意儿。如果你在为一个网站或一个库写代码,你就需要引入编译的步......
  • JSDoc
    https://www.jsdoc.com.cn/JSDoc入门默认情况下,JSDoc使用内置的“默认”模板将文档转换为HTML。在命令行上运行文档生成器此命令将在当前工作目录中创建名为out/......