当数组元素可以是以下两种类型之一时,如何在JSDoc中记录Array
返回值(和参数):
对象文字A类型(如String
,Array
).
发布于 2012-09-28 02:51:29
如果您正在寻找如何在数组中记录对象的类型,则需要如下所示:
/**
* @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 */
发布于 2015-08-21 20:08:16
给定一个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) {}
记录properties of the values in an array
/**
* @param {Object[]} screenings
* @param {Number} screenings[].timestamp - Unix timestamp.
* @param {String} screenings[].url - Booking URL.
*/
function positionTimes (screenings) {}
这不适用于描述@return
ed类型,因为返回值不带名称。
使用集合定义:
/**
* @param {Array.<{timestamp: Number, url: String}>} screenings
*/
function positionTimes (screenings) {}
这种方法的一个优点是它是一行程序,所以您可以在@return
声明中使用它,而第二种方法不起作用。
集合定义方法的缺点是它不允许描述属性值。
发布于 2013-02-25 17:33:33
尽管您可能会发现其他一些答案中给出的指导对您有效,但我更喜欢这个语法:
/**
* @return {Array<String>} ...
*/
与其他人提供的指导相比,根据您在问题中给出的示例,我认为这更接近您的期望。
这是关于JSDoc的很好的信息来源:https://wiki.servoy.com/display/DOCS/JSDoc+Annotations
编辑:修复了移动的链接-感谢@hc_dev的注意
https://stackoverflow.com/questions/8498975
复制相似问题