Допустим, у вас есть что-то вроде следующего:
var someFunc = function() {
// do something here with arguments
}
Как бы вы правильно задокументировали, что эта функция может принимать любое количество аргументов в JSDoc? Это мое лучшее предположение, но я не уверен, что оно верное.
/**
* @param {Mixed} [...] Unlimited amount of optional parameters
*/
var someFunc = function() {
// do something here with arguments
}
Относится к: php - Как документировать переменное количество параметров
источник
var_args
или все, что вы хотите вызвать в качестве единственного параметра. Печальный хак./** @param {...Function} tasks The tasks. */ function waterfallTasks(...tasks) {
Остальные параметры всегда функционально присутствуют в параметрах.Как это сделать, теперь описано в документации JSDoc, и в ней используется многоточие, как в документации Closure.
@param {...<type>} <argName> <Argument description>
Вам необходимо указать тип после многоточия, но вы можете использовать a
*
для описания принятия чего-либо или использовать|
для разделения нескольких приемлемых типов. В сгенерированной документации JSDoc будет описывать этот аргумент как повторяемый , так же как он описывает необязательные аргументы как необязательные .В ходе тестирования не было никакой необходимости иметь аргумент в самом определении функции JavaScript, поэтому ваш фактический код может просто иметь пустые круглые скобки, то есть
function whatever() { ... }
.Единый тип:
Любой тип (в приведенном ниже примере квадратные скобки
items
будут помечены как необязательные и повторяющиеся):Для нескольких типов необходимо заключить список типов в круглые скобки с многоточием перед открывающей скобкой:
@param {...(Person|string)} attendees - Meeting attendees, listed as either String names or {@link Person} objects
источник
@param {{...(key: value)}} [config] - specific configs for this transfer
но интересно, правильно ли это?Из группы пользователей JSDoc :
Хотя он немного устарел (2007 год), но я не знаю ничего более актуального.
Если вам нужно задокументировать тип параметра как «смешанный», используйте
{*}
, как в@param {*} [arguments]
.источник
@param [arguments]
(или@param {*} [arguments]
в этом отношении), а также синтаксис, установленный компилятором Google Closure (упомянутый в другом ответе).@param [...]
не поддерживается.Я долго с этим размышлял. Вот как это сделать с помощью Google Closure Compiler:
/** * @param {...*} var_args */ function my_function(var_args) { // code that accesses the magic 'arguments' variable... }
Ключ состоит в том, чтобы дать вашей функции
var_args
параметр (или как вы его называете в своем@param
операторе), даже если функция фактически не использует этот параметр.источник