2017-07-14 11 views
1

curValをJSDocと記述したいですか?渡された無名関数のパラメータを記述する方法は?

私は@paramの直前でarrays.every()と匿名コールバックの内部で試しましたが、方法を解決するためにPhpStormには役立ちませんでした。私は便宜上つけ、それを必要とする

/** 
* @param {Array} curVal 
*/ 
arrays.every(function (curVal) { 
    /** 
    * @param {Array} curVal 
    */  
    curVal.??? 
}); 

は、私はちょうど簡単に、私はあなたの最高の(そして最も読みやすい)オプションは、例えば、機能に名前を与えることだと思いIDEの自動補完にオブジェクトcurVal

答えて

1

私はPhpStormが(the docsは、Closure Compiler tags and type annotationsを認識すると言っています)どのようにスマートなのか分かりませんが、私は2つの可能な解決策を考えることができます。

arrays.every(/** @param {Array} curVal */ function (curVal) { 
    // ... 
}); 

または(閉鎖コンパイラのインラインスタイル):

まず、直接、関数のparamの種類、それを伝えることです

arrays.every(function (/** Array */ curVal) { 
    // ... 
}); 

第二に、そしてPhpStormがスマートである場合にのみ動作しますArray.prototype.everyのコールバックがその引数を取得する方法を知るには、arraysが配列の配列であることを確認することです。

/** @type {Array.<Array>} */ 
var arrays = getArrays(); 

または:

var arrays = /** Array.<Array> */ getArrays(); 
+0

これは素晴らしいです、私はあなたのすべての提案を試して、私は最初と2番目は完璧に働いた。 PhpStormにはある種のキャッシュがあるようだし、最初の型の注釈を削除している間に、IDEがArrayであることを覚えているので、二重チェックが必要です。それから、Objectに変更し、2番目のオプションを再度Arrayに変更しました。ありがとう! – Marecky

1

Array.prototypeメソッドにアクセスしたいです

/** 
* @type {Number[]} 
*/ 
var array = [ 1, 2, 3 ]; 

/** 
* @param {Number} curVal 
*/ 
var fn = function (curVal) { 
    // operate on curVal 
}; 
array.forEach(fn); 

は、私はあなたが(そしておそらく必要があります)、私の例のように、ではないだけではなく{Array}を配列型を指定すべきだと思う、と私はあなたがarrays.everyによって何を意味するのか分からないが、私はあなたが使用するためのものと仮定します.forEachをArrayオブジェクトから削除します。

[編集]

OK、今私はこのようなものは、あなたが望むものであるかもしれない、理解:

/** 
* @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 
}); 

(私は彼らのPhpStorm、ジェットブレーンズIntelliJのを使用しない:この仕事(とあなたの質問のコードに最も近い)になるようにIDE、しかし彼らは同じJavascriptの統合を共有します)

+0

申し訳ありませんが、私はあなたの質問を読み違えると思います。 – Lambart

関連する問題