javascript 如何使用JSDoc记录函数返回的函数

wd2eg0qa  于 2023-01-24  发布在  Java
关注(0)|答案(4)|浏览(141)

我使用JSDoc进行参数文档编制。
如何记录many_prompts的参数类型是很清楚的,但是记录它返回的函数的正确方法是什么呢?

/**
 * @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');
hec6srdp

hec6srdp1#

您可以记录内部函数,然后像这样引用它

/**
 * @param {Number} - number of times to prompt
 * @return {many_prompts~inner} - the returned function
 */
function many_prompts(count){
  /**
   * My inner function
   *
   * @param {object} prompt Some parameter
   */
  var inner = function(prompt){
    for(var i=0;i<count;i++) alert(prompt)
  };
  return inner;
}
zvokhttg

zvokhttg2#

这似乎对我有用。

/**
 * @param {Number} count - number of times to prompt
 * @return {function(): 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;
  }
qxgroojn

qxgroojn3#

我喜欢的方式:

/**
 * @param {number} count - number of times to prompt
 * @returns { (promt: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;
  }
x3naxklr

x3naxklr4#

这是我的解决方案,我没有在第一个函数中描述一个返回值,同时也记录了内部函数,这导致了从内部函数中获取文档。

/**
 * Function to create a Function with multiple prompt messages
 * @function
 * @param {Number} count - number of times to prompt
 */
function many_prompts(count) {
  /** 
   * To prompt a value multiple times
   * @function
   * @param {String} prompt - parameter to prompt
   * @return {Function} prompt the input parameter
   */
  return function(prompt) {
    for(var i=0; i < count; i++) alert(prompt);
  }
}

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

然后在vscode中显示,如下图所示...
对于外部函数:

对于内部函数:

您还可以在分配函数时添加附加说明,以描述差异

/** 
 * Function to prompt a value 3 times
 * @function
 * @param {Number} prompt - parameter to prompt
 * @return {Function} prompt the input parameter
 */
const y = many_prompts(3);
y('Hello World');

相关问题