2013-05-02 7 views
5

JSDocヒントをハンドラのパラメータに使用しようとしていますが、動作しません。私は@typeと@paramで試してみて、うまくいきません。公式のJSDocには、この問題に関する有益な情報は含まれていませんでした。webstormのJSDoc @paramはどのようにコールバックハンドラのパラメータですか?

これは動作しません:

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

答えて

2

あなたは、複雑な "のtypedef" と "プロパティ" タグを使用することができます。文書化:http://usejsdoc.org/tags-typedef.html しかし、 "〜"チャートはWebIdeがタイプ注釈をリンクするのを妨げるようです。 (ただ、チルダせずに、プレーンのtypedefがMyTypeアノテーションを使用し、それが動作します)

ところで、Googleの閉鎖の道のために:

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

socket.on("data", handler); 

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

このJSDocのアノテーションは、特にGoogleの閉鎖のためですが、ちょうどために閉鎖することなく使用することができますヒントの (2012年8月以降有効:http://blog.jetbrains.com/webide/2012/08/closure-syntax/

1

これは漠然とした質問であるので、ここでは私の推測です:

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 
{}); 

コメントは単なるデータ/キーはリクエストオブジェクトに期待すべき記述しています。

+2

はい、コメントは機能しません。コードもsrも認識されません。オブジェクトとして登録することさえできません。 – Discipol

2

オブジェクトのタイプと名前を入れ替えたと思いますが、おそらくそれらを交換すると助かりますか?

これはjsdoc3のためですが、私はそれは同じだと思う:

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

関連する問題