JSDoc中的文档集合(类型数组)返回值和参数

Jon*_*han 23 javascript jsdoc

Array当数组元素可以是以下任何一个时,如何在JSDoc中记录返回值(和参数):

  • A型(例如String,Array).
  • 对象字面量.

dme*_*rtl 30

如果您正在寻找如何记录数组中对象的类型,您需要这样的东西:

 /**
  * @param {String[]} aliases
  */
Run Code Online (Sandbox Code Playgroud)

http://code.google.com/p/jsdoc-toolkit/wiki/TagParam#Parameter_Type_Information


Gaj*_*jus 16

给定一个screenings参数:

screenings = [
    {
        timestamp: 1440157537,
        url: 'https://stackoverflow.com/a/22787287/1269037',
    },
    {
        timestamp: ...,
        url: ...,
    },
];
Run Code Online (Sandbox Code Playgroud)

您可以通过以下三种方式之一来记录它:

使用@typedef:

/**
 * @typedef {Object} screening
 * @property {Number} timestamp - UNIX timestamp.
 * @property {String} url - Booking URL.
 */

/**
 * @param {screening[]}
 */
function positionTimes (screenings) {}
Run Code Online (Sandbox Code Playgroud)

当有多个函数使用screening对象的变体时,您可以使用函数名称空间,例如

/**
 * @typedef {Object} positionTimes~screening
 * @property {Number} timestamp - UNIX timestamp.
 * @property {String} url - Booking URL.
 */

/**
 * @param {positionTimes~screening[]}
 */
function positionTimes (screenings) {}

/**
 * @typedef {Object} filterTimes~screening
 * @property {Number} timestamp - UNIX timestamp.
 * @property {String} url - Booking URL.
 */

/**
 * @param {filterTimes~screening[]}
 */
function filterTimes (screenings) {}
Run Code Online (Sandbox Code Playgroud)

记录数组中值属性:

/**
 * @param {Object[]} screenings
 * @param {Number} screenings[].timestamp - Unix timestamp.
 * @param {String} screenings[].url - Booking URL.
 */
function positionTimes (screenings) {}
Run Code Online (Sandbox Code Playgroud)

这不适用于描述@returned类型,因为返回值不带名称.

使用集合定义:

/**
 * @param {Array.<{timestamp: Number, url: String}>} screenings
 */
function positionTimes (screenings) {}
Run Code Online (Sandbox Code Playgroud)

这种方法的一个优点是它是单行的,所以你可以在@return声明中使用它,而第二种方法不起作用.

集合定义方法的缺点是它不允许描述属性值.


Sir*_*lot 6

虽然您可能会发现某些其他答案中给出的指导对您有用,但我更喜欢这种语法:

/**
 * @return {Array<String>} ...
 */
Run Code Online (Sandbox Code Playgroud)

与其他人提供的指导相比,我认为这更符合您在问题中给出的示例的期望.

以下是有关JSDoc的最佳信息来源:https://wiki.servoy.com/display/public/DOCS/JSDoc+Annotations

  • IntelliJ 语法高亮对此很满意:) (2认同)