如何在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 :(得分: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 variants和at official docs。