javascript - Hur gör jag JSDoc @param i WebStorm för en callback-handlers parametrar?


Jag försöker använda JSDoc-hinting på parametern för en hanterare men det fungerar inte. Jag har försökt med @type och @param och det fungerar inte. Den officiella JSDoc innehöll ingen användbar information om detta problem.

Detta fungerar inte:

    socket.on( "data",
    /**
     * @param request {Object}
     * @param request.code {Number}
     * @param request.id {Number}
     * @param request.sr {String}
     */
    function( request )
    {});

Svar #1

Du kan använda komplexa "typedef"- och "property"-taggar. Dokumenterat på: http://usejsdoc.org/tags-typedef.html Dock verkar tecknet "~" förhindra att WebIde länkar typanteckningar. (Använd bara enkel typedef MyType-anteckning utan tilde så fungerar det)

Förresten, för Google Closure-sättet:

/** @typedef {{code: Number, id: Number, str: String}} **/
SocketRequest;

socket.on("data", handler);

/**
 * @param {SocketRequest} req
 */
function handler(req) {
    //req will be hinted here
}

Denna jsdoc-anteckning är speciellt för Google Closure, men kan användas utan Closure bara för att ge en ledtråd. (bör fungera sedan augusti 2012: http://blog.jetbrains.com/webide/2012/08/closure-syntax/)

Svar #2

Jag tror att du har bytt plats på typ och namn på objekten, kanske kan det hjälpa att byta dem?

Detta är för jsdoc3, men jag tror att det är samma:

http://usejsdoc.org/tags-param.html