【问题标题】:How do I JSDoc @param in webstorm a callback handler's parameters?我如何在 webstorm 中使用 JSDoc @param 回调处理程序的参数?
【发布时间】:2013-04-27 06:44:28
【问题描述】:

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

这不起作用:

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

【问题讨论】:

    标签: javascript webstorm jsdoc


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      这是针对jsdoc3的,不过我觉得是一样的:

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

      【讨论】:

        【解决方案3】:

        这是一个模糊的问题,所以这是我的猜测:

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

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

        【讨论】:

        • 是的,并且 cmets 不起作用,它既不识别代码,也不识别 sr。它甚至没有注册为对象。
        猜你喜欢
        • 1970-01-01
        • 2022-12-13
        • 2018-03-26
        • 1970-01-01
        • 2017-11-13
        • 2013-08-25
        • 1970-01-01
        • 2018-10-24
        • 2020-08-16
        相关资源
        最近更新 更多