我有一个对象定义了一组这样的动作:
var actions = {
close: "action_close",
renderPreview: "action_renderpreview",
switchToMobile: "action_switchmobile",
switchToTablet: "action_switchtablet",
openConfiguration: "action_configuration",
save: "action_save"
};
然后我有一个方法可以将这些动作绑定到这样的函数:
/**
* 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来记录onAction函数的action
参数应该是actions
对象的属性值。显然{actions.<prop>}
不是正确的方法,但我想知道是否有一种简单的方法来实现这一目标。
我可以将action
param记录为{string}
,但随后任何随机字符串都可以传递给onAction函数,我试图避免使用正确的JSDoc文档。
这可能是一个非常简单的解决方案,或根本不可能/不必要。无论哪种方式,我都搞清楚了!谢谢!
答案 0 :(得分:1)
你正在以错误的方式看待它。在声明操作时,声明属性的特定类型:
/**
* @typedef {string} MyAction
* @typedef {object} Actions
* @property {MyAction} prop
*/
然后你可以直接使用那种类型
/**
* ...
* @param {MyAction} action - The action to bind
*/
然而,这仍然允许任何string
。要将字符串值限制为特定集,您需要jsdoc enum。
/**
* Actions.
* @readonly
* @enum {string}
*/
var actions = {
close: "action_close",
...
};