javascriptjsdocjsdoc3

How to document a function returned by a function using JSDoc


I am using JSDoc for parameter documentation.

It is clear how to document the parameter types for many_prompts, but what is the right way to document the function it returns?

/**
 * @param {Number} - number of times to prompt
 * @return {Function(prompt{Number})} - the returned function
 */
function many_prompts(count) {
  return function(prompt) {
    for(var i=0; i < count; i++) alert(prompt);
  }
}


//Example of use:
var y  =many_prompts(3);
y('Hello World');

Solution

  • The way I prefer:

    /**
     * @param {number} count - number of times to prompt
     * @returns { (prompt:string) => void } - the returned function
     */
      manyPrompts(count) {
          /**
           * My inner function
           *
           * @param {object} prompt Some parameter
           */
          const inner = function(prompt) {
            for (let i=0; i < count; i++) {
              alert(prompt);
            };
          };
          return inner;
      }