我可以JsDoc正确的Factory方法的返回值吗?

时间:2011-02-06 11:02:31

标签: javascript lazy-loading jsdoc oop

我正在寻找构建系统的方法,我不需要加载所有源文件来播放应用程序。我过去的项目有200多个.js文件(我不是在开玩笑!)而且重新加载页面来测试你开发的功能真的很慢。

我研究了Dojo,我看到他们是如何构建动态加载器的。基本上你只需要加载一个核心组件,然后在需要时加载其他所有组件。

我正在考虑在我的应用程序中实现一个工厂方法,它允许我在JavaScript中构造对象的新实例:

var user = MyApp.create('MyApp.model.User');

而不是:

var user = new MyApp.model.User();

我想抛弃new关键字的原因是因为前一种方法允许我以延迟加载的方式动态加载组件(如果它已经不存在)。工厂方法只能查看目标对象是否已定义,如果不是,则会加载它。

我面临的唯一问题是IDE不再理解userMyApp.model.User的类型,这当然不是一件好事。

有没有办法解决这个难题?我可以以某种方式JsDoc那种工厂方法吗?

1 个答案:

答案 0 :(得分:2)

如果您的工厂方法根据参数返回各种类型的对象,那么您无法以IDE可以理解的方式记录工厂方法本身的返回值(使用@returns)。至少我不知道有任何办法。

但是你可以通过注释包含对象的变量来轻松解决你的问题,如下所示:

/**
 * @type {MyApp.model.User}
 */
var user = MyApp.create('MyApp.model.User');

当然,我不知道您的特定IDE是否可以解释这一点。我可以(使用Komodo)。