Могу ли я JsDoc возвращать значение для метода Factory правильно? - PullRequest
2 голосов
/ 06 февраля 2011

Я ищу способы построить систему, в которой мне не нужно загружать все исходные файлы для воспроизведения приложения. В моем прошлом проекте было более 200 файлов .js (я не шучу!), И перезагрузка страницы была очень медленной, чтобы протестировать разработанные вами функции.

Я посмотрел в Dojo и увидел, как они создали динамический загрузчик. По сути, вы просто загружаете один основной компонент, тогда все остальное будет загружено при необходимости.

Я думаю о реализации метода фабрики в моем приложении, который позволяет мне создавать новые экземпляры объектов в JavaScript:

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

вместо:

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

Причина, по которой я хотел бы отказаться от нового ключевого слова, заключается в том, что первый подход позволяет мне динамически загружать компонент с отложенной загрузкой, если он еще не существует. Фабричный метод может просто посмотреть, определен ли целевой объект, а если нет, загрузить его.

Единственная проблема Я сталкиваюсь с этим с тем фактом, что IDE больше не понимают user - это тип MyApp.model.User, что, безусловно, не очень хорошая вещь.

Есть ли способ решить эту дилемму? Можно ли как-нибудь JsDoc этот фабричный метод?

1 Ответ

2 голосов
/ 02 ноября 2011

Если ваш фабричный метод возвращает различные типы объектов на основе аргумента, то вы не можете задокументировать возвращаемое значение для самого фабричного метода (используя @returns) таким образом, чтобы в IDE можно было это понять. По крайней мере, я не знаю, как это сделать.

Но вы можете легко решить вашу проблему, пометив переменную, которая содержит объект, следующим образом:

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

Конечно, я не знаю, может ли ваша конкретная IDE это интерпретировать. Моя банка (с использованием Komodo).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...