Как в JSDoc описать тип через результат вызова функции?

В JSDoc типы данных могут быть описаны с помощью специального синтаксиса. Для описания типа через результат вызова функции в JSDoc используется ключевое слово function с указанием типов для аргументов функции и типа возвращаемого значения.

Пример описания типа через результат вызова функции:

/**
 * @function
 * @param {number} num1 - Первое число
 * @param {number} num2 - Второе число
 * @returns {number} - Сумма двух чисел
 */
function sum(num1, num2) {
  return num1 + num2;
}

В данном примере функция sum принимает два числовых аргумента num1 и num2, а возвращает число - их сумму. Такой тип описывается через @returns и указывается после знака возвращает.

Также возможно использование более сложных типов данных, например, объектов или массивов. Пример:

/**
 * @function
 * @param {string[]} names - Массив имен
 * @returns {object} - Объект с информацией о именах
 * @property {string} first - Первое имя
 * @property {string} last - Последнее имя
 */
function processNames(names) {
  return {
    first: names[0],
    last: names[names.length - 1]
  };
}

В данном примере функция processNames принимает массив строк names, а возвращает объект с двумя свойствами first и last, которые являются строками. Такой тип описывается через указание типа объекта и типов его свойств.