我想用JSDoc描述curVal
我在@param
之前和匿名回调中尝试了arrays.every()
,但它对PhpStorm
解析方法没有帮助。
/**
* @param {Array} curVal
*/
arrays.every(function (curVal) {
/**
* @param {Array} curVal
*/
curVal.???
});
我需要它以方便,我只想轻松访问IDE在对象Array.prototype
curVal
方法
答案 0 :(得分:1)
我认为你最好的(也是最清晰的)选项是为函数命名,例如
/**
* @type {Number[]}
*/
var array = [ 1, 2, 3 ];
/**
* @param {Number} curVal
*/
var fn = function (curVal) {
// operate on curVal
};
array.forEach(fn);
我认为您应该(也许必须)指定数组类型,如我的示例中所示,不仅仅是{Array}
,而且我不知道arrays.every
的含义,但是我假设您打算使用Array对象中的.forEach
。
<强> [编辑] 强>
好的,现在我明白了,也许这就是你想要的东西:
/**
* @param {Array} curVal
*/
var fn = function (curVal) {
curVal. // press Ctrl-Space here, and autocompletion will work
};
但是,如果你真的想将jsdoc与匿名函数一起使用,那么这样的东西就可以了(并且最接近你问题中的代码):
var arrayOfArrays = [[1,2,3], [2,3,4]]
arrayOfArrays.every(/** @param {Array} curVal */function (curVal) {
curVal. // press Ctrl-Space here, and autocompletion will work
});
(我使用JetBrains&#39; IntelliJ,而不是他们的PhpStorm IDE,但他们共享相同的Javascript集成)
答案 1 :(得分:1)
我不知道PhpStorm是多么聪明(the docs说它识别Closure Compiler tags and type annotations),但我可以想到两种可能的解决方案。
首先是直接告诉它函数参数的类型:
arrays.every(/** @param {Array} curVal */ function (curVal) {
// ...
});
或(Closure Compiler内联样式):
arrays.every(function (/** Array */ curVal) {
// ...
});
其次,这只有在PhpStorm足够聪明才能知道Array.prototype.every
的回调如何得到它的参数时才会起作用,就是确保它知道arrays
是一个数组数组:
/** @type {Array.<Array>} */
var arrays = getArrays();
或者:
var arrays = /** Array.<Array> */ getArrays();