rupps
rupps

Reputation: 9907

JSDoc: Annotating an exported method

If I define an object like this:

/**
 * My Cool Object
 * @constructor
 */

 function MyCoolObject() {

       /**
        * Cool Method, private
        * @param {!string} parameter
        */

       function localMethod(parameter) {
           // do stuff
       }

       // Export the method
       this.exportedMethod = localMethod;

 }

I'd like to know, if at all possible, how to tell JSDOC to use the annotation for localMethod in exportedMethod, or how can I annotate exportedMethod, because if I do:

       // Export the method

       /**
        * Cool Method 
        * @param {!string} parameter
        */
       this.exportedMethod = localMethod;

JSDOC assumes it's a field rather than a method, then only uses the description, ignoring the @param part.

Upvotes: 0

Views: 287

Answers (1)

Louis
Louis

Reputation: 151491

I would reduce it to:

/**
 * My Cool Object
 * @constructor
 */

function MyCoolObject()  {
    /**
     * Cool Method, private
     * @param {!string} parameter
     */
    this.exportedMethod = function (parameter) {
        // do stuff
    };

}

You can do var localMethod = this.exportedMethod right after if you want a local reference to the method. In the off chance that you've over-simplified your example and you need to first assign to localMethod before assigning to this.exportedMethod you could do this:

/**
 * My Cool Object
 * @constructor
 */

function MyCoolObject()  {

    function localMethod(parameter) {
        // do stuff
    }

    /**
     * Cool Method, private
     * @param {!string} parameter
     * @function
     */
    // Export the method
    this.exportedMethod = localMethod;

}

The @function declaration tells jsdoc that it is dealing with a function.

Upvotes: 1

Related Questions