【问题标题】:JSDoc type for multiple vars多个变量的 JSDoc 类型
【发布时间】:2014-06-12 02:05:01
【问题描述】:

我正在编写一个 JavaScript 模块,我想为它编写一个好的 JSDoc。我在单个 var 中定义了多个变量(var x = 1, y = functionA; 等)。其中一个变量包含一个函数引用(可能只有 3 个选择)。

现在我的问题:有没有办法像上面那样记录它,以便我的 IDE(WebStorm)也识别变量类型(atm。我在分配其他函数引用给这个变量时收到警告)?

【问题讨论】:

    标签: javascript webstorm jsdoc


    【解决方案1】:

    尝试为此使用内联 doc cmets,例如:

    var /**Number*/ num = 1, /**String*/ str = "";
    

    【讨论】:

    • 这是一种有效的格式 - 请参阅 code.google.com/p/jsdoc-toolkit/wiki/InlineDocs。它得到了 WebStorm 的支持。感谢 2 '-',总是很乐意提供帮助!
    • 啊,正在寻找单个 var 语句和 @typedef。有人应该接受这个答案。
    • 这实际上是靠运气。尝试不为这些变量定义初始值,看看 Webstorm 现在是如何不知道您分别需要一个数字和一个字符串的。
    • 即使没有初始值也能正常工作 - WebStorm 在num. 等之后正确建议数字方法。
    【解决方案2】:

    这是正确的 JSDoc 语法,它可以在 Webstorm 中很好地用于自动完成和类型检查:

    let 
        /** @type {Number} */ someNumber, 
        /** @type {String} */ someString;
    

    尝试将字符串设置为 someNumber 并查看 Webstorm 抱怨它:

    对于函数,您还可以指定其参数和返回值。例如:

    /** @type {function(Number, String): Number[]} */
    

    是一个函数,它接收一个数字作为第一个参数,一个字符串作为第二个参数并返回一个数字数组。

    注意:虽然它在自动完成方面工作得很好,但目前 Webstorm 无法对函数进行类型检查。例如,它允许我这样做:

    【讨论】:

    • 这是一个很老的问题;)。 WebStorm 得到了无数次更新,现在我什至无法重新创建这个问题(或者至少不记得如何)。无论如何感谢您的输入:)。
    • 尽管如此,请考虑接受我的贡献,因为它正确回答了原始问题(虽然旧问题,但仍然有效)。出于某种原因,另一个答案有四个赞成票,但没有按预期工作(我在 Webstorm 中尝试过)。
    • 抱歉,我不会仅仅因为你想在 SO 上有更多的星星。我无法重新创建原始问题,因此无法知道这是否真的解决了原始问题。那时的问题不仅在于原始类型,还在于函数引用和更新那些(阅读我的整个问题,而不仅仅是其中的一半)。将不同的函数分配给变量会导致警告(可能函数签名不同,但我不确定了)。无论如何,停止挖掘非常古老的问题,立即开始帮助有需要的人。
    • 对不起,如果您是这样理解的。我恳请您批准我的回答考虑到您同意它回答了您的问题。我真诚的意图是回答这个问题,不管它有多老。问题仍然悬而未决,到目前为止唯一的答案是错误的,那么为什么不给出正确的答案呢?
    • 是的,我回答了你的问题。多变量声明和如何记录函数类型。当您说“我无法再重现该问题”时,那不是真的。这很容易在 Webstorm 中重现。但是,如果您不想费心测试我的答案,那对我来说很好,真的!最好把它留给可能有同样疑问的其他人。
    猜你喜欢
    • 2020-04-02
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2011-06-22
    • 2014-04-20
    相关资源
    最近更新 更多