JSDoc - 函数参数应该是对象的 属性

JSDoc - Function parameter should be property of object

我有一个对象定义了一组动作,如下所示:

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 参数记录为 {string},但随后可以将任何随机字符串传递给 onAction 函数,我试图避免使用正确的 JSDoc 文档。

这可能是一个非常简单的解决方案,或者根本不可能/没有必要。反正我是想不通!谢谢!

你看错了。声明动作时,为 属性:

声明特定类型
/**
 * @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",
   ...
};