2015-01-02 2 views
1

При запуске jsdoc для кода, подобного приведенному ниже, документы @param игнорируются. Я предполагаю, что это потому, что я возвращаю функцию внутри IIFE, но учитывая, насколько распространен шаблон в JS, мне трудно поверить, что jsdoc не может справиться с этим.jsdoc не доверяет объявлениям @param

/** @namespace */ 
var util = { 
    /** 
    * Repeat <tt>str</tt> several times. 
    * @param {google.maps.Marker} str The string to repeat. 
    * @param {number} [times=1] How many times to repeat the string. 
    * @returns {string} 
    */ 
    repeat: (function() { 

     var magicNumber = 1; 

     return function(str, times) { 
      if (times === undefined || times < magicNumber) { 
       times = magicNumber; 
      } 
      return new Array(times+1).join(str); 
     }; 

    }()) 
}; 

ответ

1

Видимо JSDoc будет включать в себя только @param и @return документов, если он считает, документированный элемент будет функции. Вы можете форсировать это поведение, указав @function в комментарии к документу.

Так это работало:

/** @namespace */ 
var util = { 
    /** 
    * Repeat <tt>str</tt> several times. 
    * @function <---- ADDED THIS LINE 
    * @param {google.maps.Marker} str The string to repeat. 
    * @param {number} [times=1] How many times to repeat the string. 
    * @returns {string} 
    */ 
    repeat: (function() { 

     var magicNumber = 1; 

     return function(str, times) { 
      if (times === undefined || times < magicNumber) { 
       times = magicNumber; 
      } 
      return new Array(times+1).join(str); 
     }; 

    }()) 
}; 

(Немного утомительно, если вы спросите меня, я надеюсь, что JSDoc будет либо достаточно умны, чтобы понять, что это функция, или просто доверять пользователю без необходимости добавлять @function. повсюду.)

Смежные вопросы