我有这样的东西,当第一个参数是 != 3
时,我的函数仅接受第二个和第三个参数。如何使用 JSDoc 记录此行为?
getTimeframe: function(timeframe, since, until) {
/*
* @param {Number} timeframe Can be 0, 1, 2 or 3
* @param {Number} since Optional when timeframe !== 3
* @param {Number} until Optional when timeframe !== 3
*/
...
}
最佳答案
据我所知,以下是当前使用 jsdoc 3 可以做的最好的事情。关键是使用 @also
来指示该函数具有多个签名。然后,您在描述中详细说明何时适用一个签名以及何时适用另一个签名,等等。
/**
* When the <code>timeframe</code> parameter is not 3...
*
* @param {number} timeframe Can be 0, 1, 2.
* @param {number} [since] blah.
* @param {number} [until] blah.
*
* @also
*
* When the <code>timeframe</code> is 3, then...
*
* @param {number} timeframe Set to 3.
*/
function getTimeframe(timeframe, since, until) {
}
这将为 getTimeframe
函数创建两个签名。
(注意:在上述情况下,我更喜欢使用 number
而不是 Number
,因为 1 instanceof Number
(例如)是 false
。另一方面,typeof 1
是 "number"
且 typeof Number(1)
也是 "号”
。)
关于javascript - 如何使用 JSDoc 在某些情况下记录可变数量的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25605557/