多个变量的JSDoc类型

6
我正在编写一个JavaScript模块,希望能够为其编写良好的JSDoc。我在单个var语句中定义了多个变量(例如var x = 1, y = functionA;等)。其中一个变量保存一个函数引用(可能只有3个选项)。
我的问题是:是否有一种方式可以像上面那样记录它,以便我的IDE(WebStorm)也能识别变量类型(目前当我将其他函数引用赋值给此变量时,我会收到警告)?
2个回答

6

试着使用内联文档注释,例如:

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

啊,我正在寻找单变量语句和@typedef。有人应该接受这个答案。 - Sjeiti
这实际上是纯运气。尝试不为这些变量定义初始值,看看Webstorm现在是否意识到你分别期望了一个数字和一个字符串。 - Lucio Paiva
它甚至可以没有初始值而运行 - WebStorm 在 num. 后正确提示数字方法。 - lena

4

这是正确的JSDoc语法,可以在Webstorm中完美地进行自动完成和类型检查:

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

尝试将字符串设置为someNumber,然后查看Webstorm的警告:

enter image description here

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

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

该函数接受一个数字作为第一个参数,一个字符串作为第二个参数,并返回一个数字数组。

注意:尽管它在自动补全方面表现良好,但目前 WebStorm 无法对函数进行类型检查。例如,它允许我执行以下操作:

enter image description here


1
这是一个相当古老的问题 ;)。WebStorm 进行了数不清的更新,现在我甚至无法重新创建此问题(或者至少无法记起如何操作)。无论如何,感谢您的意见 :)。 - Dracco
尽管如此,请考虑接受我的贡献,因为它正确回答了原始问题(尽管旧,但仍然有效)。由于某种原因,其他答案有四个赞,但并没有按预期工作(我在Webstorm中尝试过)。 - Lucio Paiva
如果你误解了我的意思,我很抱歉。我恳请你考虑批准我的回答,因为你同意它回答了你的问题。我的真诚意图只是回答这个问题,无论它有多久远。这个问题仍然没有得到正确的回答,那么为什么不给出一个正确的答案呢? - Lucio Paiva
不,要复现这个问题并不容易,因为我尝试创建一个带有函数分配的变量,然后重新分配一个不同签名的函数给它,但是它没有显示任何错误或警告,所以他们可能在IDE本身中进行了更改。这意味着我不能接受任何答案是否有效。 - Dracco
嗯,你说得对。我在这里进行了测试,使用不同签名分配新函数并没有让Webstorm抱怨,即使我用我期望的签名记录它也是如此。很好的发现。我会将这些信息添加到我的答案中,希望有一天他们能够修复这个问题。 - Lucio Paiva
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接