JSDoc: Как документировать объект со смесью динамических и фиксированных свойств? - PullRequest
2 голосов
/ 06 мая 2019

Предположим, у меня есть такая функция:

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 .

Так, как мне документировать объект со смесью динамических и фиксированных свойств?

...