4

依存関係管理にrequire.jsを使用し、Google Closureアノテーションを使用してオートコンプリートを強化します(WebStorm / IDEAで)。Backboneに大きく依存し、Java のような方法で Javascript コードを開発します。つまり、静的メソッドとインスタンス メソッドの両方を使用します。

とらえどころのないのは、実際にはクラスである関数引数 ( newキーワードと一緒に使用されるパラメーター) の注釈を適切に記述する方法です。

require(['foo'], function(Foo) {
  var bar = new Foo();
});

次のようにパラメーターに注釈を付けると、 WebStorm および/または Google Closure は、それがFooのインスタンスであると正しく想定します。

require(['foo'],
/** @param {Foo} Foo */ 
function(Foo) {
   Foo.<cursor> <-- gives me an autocompletion for an instance of Foo
});

簡単なグーグル検索では、 function(new: Foo)をパラメーターの説明として使用することをお勧めします。ただし、このアプローチでは、コンストラクターのパラメーターや、クラスが持つ可能性のある静的メソッドのオートコンプリートが失われます。

私が望んでいる構成は、次のようなものです。

require(['foo'],
/** @param {Type<Foo>} Foo */
function(Foo) {
   Foo.<cursor> <-- gives me an autocompletion for statics of Foo
});

これを達成する方法はありますか?

4

1 に答える 1

7

あなたが探しています

/** @param {function(new: Foo)} someConstructor */

次のようにして、コンストラクターの引数を指定することもできます。

function(new: Foo, ArgType1, ArgType2)

ドキュメントからの関連する一節:

演算子名: 関数newの種類:

構文例:{function(new:goog.ui.Menu, string)}

1 つのパラメーター (文字列) を受け取りgoog.ui.Menu、'new' キーワードで呼び出されたときに の新しいインスタンスを作成する関数。

コンストラクターの構築された型を指定します。

于 2014-08-08T15:46:24.407 に答える