【问题标题】:How to define a function to be a callback implementation in JSDoc?如何在 JSDoc 中定义一个函数作为回调实现?
【发布时间】:2014-09-13 03:24:50
【问题描述】:

我这样定义了@callback

/**
 * @callback MyClass~Handler
 * @param {string} target
 * @param {Options} options - Original options
 */

我用它来定义我的类原型:

/**
 * @param {string} name - The name
 * @param {MyClass~Handler} handler
 * @private
 */
MyClass.prototype._builder = function(name, handler) { //...

但是如何告诉 JSDoc 以下函数与我的 MyClass~Handler 具有相同的定义(在以下代码中类似于 @isacallback)?

/**
 * Default handler
 * @isacallback {MyClass-Handler}
 * @private
 */
MyClass.prototype._defaultHandler = function(target, options) { // ...

【问题讨论】:

    标签: javascript jsdoc


    【解决方案1】:

    我没有测试过这个,但是由于@callback只是定义了一个类型,你不能使用@type声明吗?

    换句话说:

    /**
     * Default handler
     * @type {MyClass-Handler}
     * @private
     */
    MyClass.prototype._defaultHandler = function(target, options) { // ...
    

    有关@type 的更多信息,请参阅http://usejsdoc.org/tags-type.html

    【讨论】:

    • 不是真的,因为@type 定义了一个类(如你所说的一种类型),所以我无法用该注释来描述函数参数......
    • 我认为您误解了:@type 不用于定义类(这就是 @typedef 的用途)。 @callback 定义类型(因为 @callback 基本上只是 @typedef 仅限于函数),然后您使用 @type 引用该定义(您希望使用不存在的 @isacallback 标签的方式) .
    • 虽然这很有意义,但 jsdoc 将其显示为成员而不是方法,尽管它至少以正确的方式链接到正确的类型。如果您添加 @function(试图澄清这是一种方法),那么文档会错误地将 @type 显示为其 returns 类型。
    猜你喜欢
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多