Javascript 如何使用混合参数类型记录JSDoc?

Javascript 如何使用混合参数类型记录JSDoc?,javascript,jsdoc,Javascript,Jsdoc,当参数类型可以混合时,如何使用JSDoc在JavaScript中记录方法 我有一个对话框对象的方法,我可以显示HTML或我自己的可视对象。JSDoc方法如下所示: /** * Can pass in viewable object, or some HTML element * * @param viewable viewable {Viewable} or HTML element {HTMLElement} or String {string} * @param {Boolean}

当参数类型可以混合时,如何使用JSDoc在JavaScript中记录方法

我有一个对话框对象的方法,我可以显示HTML或我自己的可视对象。JSDoc方法如下所示:

/**
 * Can pass in viewable object, or some HTML element
 *
 * @param viewable viewable {Viewable} or HTML element {HTMLElement} or String {string}
 * @param {Boolean} cancelable is cancellable
 * @param title string or data object of String and Id {Title:String, Id:String} for setting HTML id value
 * @param {Array} actions array of functions actions display buttons on the bottom connecting to the passed in functions
 * @param {String} size mode. Can be mini,small,medium,large,maxi. Or of type {width:number, height:number}
 * @param {Number} zindex starting z-order. Note: first level dialog = 10,11,12, second level dialog 13,14,15 etc.
 */
Dialog.showElement = function(viewable, cancelable, title, actions, mode, zindex){
..
}
因为JS不允许方法重载,所以我需要创建这些类型的方法,其中方法中的参数可以是两种不同的类型。有没有办法在JSDoc中记录这一点,或者JSDoc只能让您记录一个具有一种类型的参数


另外,您如何记录
{Title:String,Id:String}
类型的参数?也就是说,传入的对象不是类型。准JSON对象。

您可以使用
|
分隔符在方法类型签名中指定多个类型:

/**
 * Some method
 * @param {Object|string|number} param The parameter.
 * @returns {Object|string|number} The modified param.
 */
function doSomething(param) {
    return etc..
};
推荐以下表格-看起来很正式,因为它与上的相同:

要引用上述链接的闭包编译器文档:

请注意括号,这是必需的


这可能不是原始JSDoc规范的一部分(我不知道),但请看这篇文章,它解释了如何为Google闭包编译器注释JS:。它还有一个“记录类型”的例子,但是我的{Title:String,Id:String}怎么样呢。我可以只把它记录为{Object}吗?所以如果我有它和一个字符串,我会像@param{string}{title:string,id:Object}}param那样记录它吗?@OliverWatkins对于对象,你可以做以下
@param{Object}string}obj
@param{string}obj.a
@param{string}obj.b
@flavian您的示例有参考资料吗?到目前为止,我所能找到的官方文件对此需要括号(见下面我的答案)-因此我认为这个答案在形式上是错误的。。。
/**
 * Some method
 * @param {(Object|string|number)} param The parameter.
 * @returns {(Object|undefined)} The modified param.
 */
function doSomething(param) {
    return etc..
};