如何在JSDOC中的函数参数中记录可能的配置属性?

时间:2014-09-14 22:02:07

标签: jsdoc jsdoc3

如何在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.minimaxDepthcfg.*)参数的标记?

是否可以记录合成aiCfg类型并将其引用为:

 * @param {aiCfg} cfg  config

或其他方式?

1 个答案:

答案 0 :(得分: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.x的另一种可能性:

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

和JSDoc 3.x:

/**
  @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 variantsat official docs