5

サーバーサイドのJavascript開発にEclipseを使用しようとしています。

私が使用しているAPIには、doStuff(string, object)渡された引数(の値)に応じて異なるタイプ(1つのタイプのサブクラス)の値を返す関数(有罪を保護するために名前が変更されています)があります。

この関数を説明するJavascriptライブラリを作成しました。

/**
  * function doStuff(s, o)
  * @memberOf Global
  * @param {String} s
  * @param {Object} o
  * @type ResultType
  * @returns {ResultType}
  */
doStuff = function(str, obj} {return new ResultType();}

複数の型を返すことができるので、基本型を返すものとして宣言しました。ただし、これはEclipseが実際のタイプを認識していないことを意味するため、後でそのオブジェクトのフィールドにアクセスしようとすると、誤ったエラーが発生します。

したがって、FooResultType、BarResultTypeがあり、それぞれがResultTypesですが、追加のフィールド/関数があります。

これを回避する方法はありますか?Eclipseが実際のタイプを認識できるように、戻り値を保持している変数に何らかの注釈を付けることはできますか?

試しました(FooResultTypeを中かっこで囲んだ場合と付けない場合)

/**
  * @type FooResultType
  */
  v = doStuff("stringvalue", someObject);

しかし、これは違いはありません。

(この分野には他にも質問がありますが、この問題に対処するものは何もないと思います)

4

1 に答える 1

7

(私自身の質問に答える)

以下は機能します。キーは「var」のようです-変数を宣言することによってのみ、指定された型があることをJSDTに認識させることができます。私の疑いでは、JSDT は変数ごとに 1 つの型しか管理できませんが、もちろん Javascript であるため、型は任意に変更できます。

/**
  * @returns {FooResultType}
  */
  var v = doStuff("stringvalue", someObject);

また、@type ではなく @returns が必要なようですが、JSDT でサポートされているものとサポートされていないものを知ることは困難です。十分に文書化されておらず、実験が必要です。小さな変更が予期しない違いを生むことがあるようです。

于 2011-07-06T12:19:39.543 に答える