2014-09-14 2 views
0

Как документировать возможные свойства конфигурации в качестве аргумента функции в JSDoc:Как документировать возможные свойства конфигурации в аргументе функции в JSDOC?

/** 
* N level expectimax AI. 
* 
* @param {object} cfg config 
* cfg.minimaxDepth - limit for minimax search 
* cfg.expectiDepth - limit for expectimax search 
* cfg.weightFn - position weight function 
* 
* @constructor 
*/ 
function expectimaxAI(brdEngine, cfg) { ... } 

Какой разметки использовать для cfg.minimaxDepth (cfg.*) параметров?

Можно ли документировать синтетический aiCfg тип и поставить ссылку на него, как:

* @param {aiCfg} cfg config 

или как-то еще?

ответ

0

После прочтения official JSDoc 2.x docs я сделать некоторые хак:

/** 
* @name BlindWeightRandomCfg 
* @function 
* @param {number} left weight 
* @param {number} right weight 
* @param {number} up  weight 
* @param {number} down weight 
*/ 

и относятся к несуществующей функции, как:

/** 
* Blind weight random AI. 
* 
* @param {Board} brdEngine board engine from board.js 
* @param {BlindWeightRandomCfg} cfg configuration settings 
* @constructor 
*/ 
ai.BlindWeightRandom = function(brdEngine, cfg) { ... } 

Теперь аргумент cfg - кликабельны для определения BlindWeightRandomCfg!

ОБНОВЛЕНИЕ Другая возможность JSDoc 2.х:

/** 
* @name BlindWeightRandomCfg 
* @namespace 
* @property {number} left weight 
* @property {number} right weight 
* @property {number} up  weight 
* @property {number} down weight 
*/ 

и JSDoc 3.х:

/** 
    @typedef PropertiesHash 
    @type {object} 
    @property {string} id - an ID. 
    @property {string} name - your name. 
    @property {number} age - your age. 
*/ 

/** @type {PropertiesHash} */ 
var props; 

Кажется, что @typedef является решением. Пожалуйста, see other variants и at official docs.