Предположим, у меня есть такая функция:
function validator(obj){
const ret = {};
for (const key in obj){
// Returns a boolean
result = validate(key, obj[key]);
if (result !== true)
ret.error = true;
ret[key] = result;
}
return ret;
}
Эта функция вернет объект, содержимое объекта динамически заполняется в зависимости от аргумента, переданного функции.
Я могу задокументировать функцию следующим образом:
/**
* @param {Object.<string, *>} obj
* @returns {Object.<string, boolean>}
*/
Но она не документирует динамическое свойство .error
, которое также будет возвращать логическое значение.
Если это все, что будет возвращено,Я могу просто написать:
/**
* @param {Object.<string, *>} obj
* @returns {{error: boolean}}
*/
Но тогда это не документирует динамические свойства сейчас.
То, что я могу сделать, это что-то вроде:
/**
* @param {Object.<string, *>} obj
* @returns {Object.<string, boolean>|{error: boolean}}
*/
Хотя он работает, он не выглядит синтаксически правильным для меня.Я не могу использовать @typedef
, потому что он должен использоваться, когда я уже знаю, какое свойство будет использоваться.
Я не могу найти ничего относительно этой проблемы в документации JSDoc .
Так, как мне документировать объект со смесью динамических и фиксированных свойств?