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",
...
};
我有一个对象定义了一组动作,如下所示:
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",
...
};