首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >文档集合(类型的数组)返回值和JSDoc中的参数

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

Stack Overflow用户
提问于 2011-12-14 10:43:09
回答 5查看 20.6K关注 0票数 32

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

对象文字A类型(如StringArray).

  • An
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-09-28 02:51:29

如果您正在寻找如何在数组中记录对象的类型,则需要如下所示:

代码语言:javascript
复制
/**
 * @param {String[]} aliases
 */

在花括号内,String[]是参数类型:键入String作为数组[]

另请参阅jsdoc-toolkit,关于@Param tag, Parameter Type Information的归档维基页面

参数类型信息

使用花括号将参数的预期类型括起来,以记录此信息。

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

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

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

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

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

票数 37
EN

Stack Overflow用户

发布于 2015-08-21 20:08:16

给定一个screenings参数:

代码语言:javascript
复制
screenings = [
    {
        timestamp: 1440157537,
        url: 'https://stackoverflow.com/a/22787287/1269037',
    },
    {
        timestamp: ...,
        url: ...,
    },
];

您可以通过以下三种方式之一对其进行记录:

使用@typedef

代码语言:javascript
复制
/**
 * @typedef {Object} screening
 * @property {Number} timestamp - UNIX timestamp.
 * @property {String} url - Booking URL.
 */

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

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

代码语言:javascript
复制
/**
 * @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) {}

记录properties of the values in an array

代码语言:javascript
复制
/**
 * @param {Object[]} screenings
 * @param {Number} screenings[].timestamp - Unix timestamp.
 * @param {String} screenings[].url - Booking URL.
 */
function positionTimes (screenings) {}

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

使用集合定义:

代码语言:javascript
复制
/**
 * @param {Array.<{timestamp: Number, url: String}>} screenings
 */
function positionTimes (screenings) {}

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

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

票数 33
EN

Stack Overflow用户

发布于 2013-02-25 17:33:33

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

代码语言:javascript
复制
/**
 * @return {Array<String>} ...
 */

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

这是关于JSDoc的很好的信息来源:https://wiki.servoy.com/display/DOCS/JSDoc+Annotations

编辑:修复了移动的链接-感谢@hc_dev的注意

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8498975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档