Существует ли правильный синтаксис для документирования необязательных параметров JavaScript, где необязательный параметр находится в середине заголовка функции (например, jQuery, Gulp и т. д.)
Я задокументировал функцию стандартным способом, и она отлично работает. Загвоздка в том, что когда я пытаюсь установить в качестве второго параметра последнюю переменную (в случае, когда необязательный параметр не использовался), моя IDE запутывается.
Пример:
/**
* @param {number} a_num
* @param {string} [a_str='']
* @param {{}} a_obj
*/
function (a_num, a_str, a_obj) {
if (!a_obj) a_obj = a_str; // doesn't want me to save a string to an object.
a_str = '';
// more stuff
}
Если это имеет значение, я использую PHPStorm от JetBrains, который использует стиль документов Google Closure (в основном). Хотя я ищу более общий, передовой подход.
Я подозреваю, что мог бы сделать что-то уродливое, например:
/**
* @param {number} a_num
* @param {string|{}} a_str
* @param {{}} [a_obj=null]
*/
Но это не так точно описывает ситуацию, как хотелось бы. Я надеюсь, что, поскольку это становится общей структурой, что есть что-то, чтобы справиться с этим должным образом.