当前位置: 首页 > 知识库问答 >
问题:

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

荆乐
2023-03-14

当参数类型可以混合时,如何使用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对象。

共有2个答案

和选
2023-03-14

Google Closure Compiler文档建议使用以下表单-看起来很正式,因为它与usejsdoc上的表单相同。组织:

/**
 * Some method
 * @param {(Object|string|number)} param The parameter.
 * @returns {(Object|undefined)} The modified param.
 */
function doSomething(param) {
    return etc..
};

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

注意括号,这是必需的。

上官正志
2023-03-14

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

/**
 * Some method
 * @param {Object|string|number} param The parameter.
 * @returns {Object|string|number} The modified param.
 */
function doSomething(param) {
    return etc..
};
 类似资料:
  • 我正在为Java 6开发源代码到源代码转换器*1)。 我需要保持负面信息和正面信息,所以我必须为变压器实现小约束系统。约束系统是受限制的CNF公式,可以定义为以下内容: 其中,是等式约束(替换、变量赋值), 是质量限制,

  • 问题内容: 如何使用Python的文档字符串使用参数记录方法? 编辑: PEP 257给出了这个例子: 这是大多数Python开发人员使用的约定吗? 我期待一些更正式的东西,例如 环境 :Python 2.7.1 问题答案: 根据我的经验,numpy的文档字符串公约(PEP257超集)是最广泛的传播 遵循 惯例,它们也通过工具,如支持的狮身人面像。 一个例子:

  • 我们有一个DynamoDb表,其中一个列名“createdAt”有时创建为S(String)数据类型,有时创建为N(Number)数据类型。 在我的代码中,如果我定义为String,当我想获取数据时它会失败,它是数字: 如果我定义为Number,当我想获取数据并且它是表中的字符串时失败: 你们有没有人以前也有过同样的问题?应该有办法解决它对吗?并且不能只选择一种数据类型:(

  • 我试图理解为什么当我在MyModel中为T使用更高类型的参数时,以下代码无法编译 但是如果我把它改成< code > new Bar[my model[Any]]它就会编译。这是为什么呢?

  • 问题内容: 使用,如何记录参数并抛出异常? 我找不到任何方法。 我应该使用? 问题答案: 有没有办法把两者以中。 我会转换为并使用: 您还可以创建log指向的自己的方法,例如:

  • 问题内容: 我正在尝试使用Guava文档示例中所示的方式在运行时查找类型参数: 运行此代码时,将得到输出。为什么不反而变得呢? 问题答案: 此“ hack”不适用于运行时类型的值。 Java无法在此处实例化类时传播推断的类型参数 到宣言 因此,不知道应该指的是什么。 该的Javadoc状态 构造一个新的类型标记,同时 在的上下文中解析自由类型变量 。 客户端创建一个空的匿名子类。 这样做会将类型参