5

我正在尝试使用 Eclipse 进行一些服务器端 Javascript 开发。

我使用的 API 有一个函数doStuff(string, object)(更改名称以保护有罪者),它根据传递给它的参数(值)返回不同类型的值(一种类型的子类)。

我已经建立了一个 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 每个变量只能管理一种类型,尽管当然是 Javascript 类型可以任意更改。

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

它似乎也需要@returns 而不是@type,尽管很难知道 JSDT 支持和不支持什么 - 它没有很好的文档记录,需要进行实验。有时,微小的变化似乎会产生意想不到的差异。

于 2011-07-06T12:19:39.543 回答