6

我正在尝试对处理程序的参数使用 JSDoc 提示,但它不起作用。我尝试过使用@type 和@param,但它不起作用。官方 JSDoc 没有包含有关此问题的任何有用信息。

这不起作用:

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

3 回答 3

3

您可以使用复杂的“typedef”和“property”标签。记录在:http : //usejsdoc.org/tags-typedef.html 但是,“~”字符似乎阻止 WebIde 链接类型注释。(只需使用没有波浪号的普通 typedef MyType 注释就可以了)

顺便说一句,对于谷歌关闭方式:

/** @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 Closure,但可以在没有 Closure 的情况下使用,只是为了提示。(应该从 2012 年 8 月开始工作:http: //blog.jetbrains.com/webide/2012/08/closure-syntax/

于 2014-07-16T14:19:48.840 回答
2

我认为您交换了对象的类型和名称,也许交换它们会有所帮助?

这是针对 jsdoc3 的,但我认为是一样的:

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

于 2013-05-07T08:02:30.223 回答
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
{});

注释只是描述了请求对象中应该有哪些数据/键。

于 2013-05-03T04:07:03.277 回答