32

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

  • 一种类型(例如String, Array)。
  • 一个对象字面量。
4

5 回答 5

37

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

/**
 * @param {String[]} aliases
 */

在花括号里面String[]是参数类型: type Stringas array []

另请参阅jsdoc-toolkit,有关 @Param 标记的存档 wiki 页面,参数类型信息

参数类型信息

在参数的预期类型周围使用花括号来记录此信息。

/** * @param {String} userName */ function logIn(userName) { // ... }

使用管道符号记录允许使用多种类型。

/** * @param {String|Number} product */

在类型后使用 [] 表示法来指示这些类型的数组。

/** * @param {String[]} aliases */

于 2012-09-27T18:51:29.467 回答
33

给定一个screenings参数:

screenings = [
    {
        timestamp: 1440157537,
        url: 'https://stackoverflow.com/a/22787287/1269037',
    },
    {
        timestamp: ...,
        url: ...,
    },
];

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

使用@typedef

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

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

当有多个函数使用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) {}

记录数组中值的属性

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

这不适用于描述@returned 类型,因为返回值没有名称。

使用集合定义:

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

这种方法的一个优点是它是单行的,因此您可以在@return声明中使用它,而第二种方法将不起作用。

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

于 2015-08-21T12:08:15.767 回答
7

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

/**
 * @return {Array<String>} ...
 */

与其他人提供的指导相比,根据您在问题中给出的示例,我认为这更接近您的期望。

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

编辑:固定移动链接 - 感谢@hc_dev 注意到

于 2013-02-25T09:33:33.467 回答
3

按照多可@returns

/** 
 * @returns {Array} Lines from the file.
 */
function readLines(filepath) {
}

另请参阅

于 2011-12-14T03:43:28.873 回答
1

http://usejsdoc.org/的 JSDoc 文档中,给出了一个包含 type 成员的数组的示例。有两种可能性。一个看起来像这样:MyClass

@param{MyClass[]}

另一个是这样的:

@param{Array.<MyClass>}

注意和.之间。Array<

于 2015-11-16T08:14:04.810 回答