javascript - 如何使用 JSDoc 在某些情况下记录可变数量的参数

标签 javascript jsdoc

我有这样的东西,当第一个参数是 != 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/

相关文章:

javascript - 并行运行两个 async.series

javascript - 函数无法在 JavaScript 中正确执行

javascript - 更新应用程序时react-native-fcm token 刷新

javascript - MooTools 类和 JsDoc

backbone.js + require.js + jsdoc3 : Missing dependency issue with jsdoc

javascript - JSDoc 和 JavaScript 属性 getter 和 setter

javascript - Flask 应用程序在外部文件中时不执行 javascript

javascript - 在 AngularJS 中将 Controller 实例列表存储在不同的 Controller 中

javascript - "@name"的替代品,用于记录 `this` 的属性

javascript - 如何使用 JSDoc 记录 ECMA6 类?