2013-05-02 5 views
5

Ich versuche, JSDoc Hinting auf den Parameter eines Handlers zu verwenden, aber es funktioniert nicht. Ich habe versucht mit @type und @param und es funktioniert nicht. Die offizielle JSDoc enthielt keine hilfreichen Informationen zu diesem Problem.Wie kann ich JSDoc @param im webstorm die Parameter eines Callback-Handlers?

funktioniert das nicht:

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

Antwort

2

Sie Komplex "typedef" verwenden und "Eigentum" Tags. Dokumentiert in: http://usejsdoc.org/tags-typedef.html "~" scheint jedoch zu verhindern, dass WebIde Typ-Anmerkungen verknüpft. (Verwenden Sie einfach schlicht typedef MyType Anmerkung ohne Tilde und es funktioniert)

BTW, für Google Closure Weg:

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

socket.on("data", handler); 

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

Diese jsdoc Anmerkung speziell für Google Closure ist, kann aber ohne Verschluss verwendet werden, nur um von Andeutungen. (sollte seit August 2012 arbeiten: http://blog.jetbrains.com/webide/2012/08/closure-syntax/)

1

Diese vage Frage ist, also hier ist meine Vermutung:

socket.on("data", 
/** 
* @param request {Object} 
* @param request.code {Number} 
* @param request.id {Number} 
* @param request.sr {String} 
*/ 
function(request) 
    typeof request.id == 'number'; 
    console.log(request.sr); // will print out the string 
{}); 

Der Kommentar beschreibt nur, welche Daten/Schlüssel sollten im Request-Objekt zu erwarten.

+2

Ja und die Kommentare funktionieren nicht, es erkennt weder Code, noch sr. Es registriert sich nicht einmal als Objekt. – Discipol

2

Ich glaube, Sie haben den Typ und den Namen der Objekte vertauscht, vielleicht könnte das tauschen helfen?

Dies ist für jsdoc3, aber ich denke, es ist das gleiche:

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

Verwandte Themen