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

标签 javascript jsdoc

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

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/

相关文章:

javascript - 方法链和/或值缓存

javascript - 在 Node.js 中混合使用 JavaScript 和 TypeScript

reactjs - 是否可以将带有 jsdoc 子项或渲染 Prop 用作函数的文档?

documentation - 通过 "doc"解释源代码?

javascript - 样式化 'FILE' 输入类型元素

javascript - 动态选择产品变体,比较 2 个阵列

javascript - 如何使用 JSDoc 记录 useState Hook ?

javascript - 多个变量的 JSDoc 类型

javascript - 如何从另一种 JSON 格式获取一种 json 对象格式

javascript - 在 jquery 中设置背景图像不起作用