我有一个定义一组操作的对象,如下所示:
var actions = {
close: "action_close",
renderPreview: "action_renderpreview",
switchToMobile: "action_switchmobile",
switchToTablet: "action_switchtablet",
openConfiguration: "action_configuration",
save: "action_save"
};
然后我有一个方法,用于将这些操作绑定(bind)到函数,如下所示:
/**
* Add an event handler to a toolbar action
* @param {actions.<prop>} action - The action to bind
* @param {string} fnCallback - The function to invoke when the action is executed
*/
function onAction(action, fnCallback) {
this.actionHandlers[action] = fnCallback;
}
我想使用 JSDoc 来记录 action
onAction 函数的参数应该是 actions
的属性值目的。显然{actions.<prop>}
这不是正确的方法,但我想知道是否有一种简单的方法可以实现这一点。
我可以记录action
参数为{string}
,但是任何随机字符串都可以传递给 onAction 函数,我试图避免使用正确的 JSDoc 文档。
这可能是一个非常简单的解决方案,或者根本不可能/不必要。无论如何,我都想不通!谢谢!
最佳答案
你看待问题的方式是错误的。当您声明操作时,请声明属性的特定类型:
/**
* @typedef {string} MyAction
* @typedef {object} Actions
* @property {MyAction} prop
*/
然后你可以直接使用该类型
/**
* ...
* @param {MyAction} action - The action to bind
*/
但是,这仍然允许任何字符串
。要将字符串值限制为特定集合,您将需要 jsdoc enum .
/**
* Actions.
* @readonly
* @enum {string}
*/
var actions = {
close: "action_close",
...
};
关于javascript - JSDoc - 函数参数应该是对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33869951/