Я использую require.js для управления зависимостями и аннотаций Google Closure, чтобы дать мне возможность автозаполнения (в WebStorm/IDEA). Мы в значительной степени полагаемся на Backbone и разрабатываем наш Javascript-код в Java-подобном стиле - то есть как со статическими, так и с экземплярами.Google Closure: как комментировать параметр, используемый в качестве конструктора
Что остается неуловимым, так это то, как правильно писать аннотации для аргументов функции, которые на самом деле являются классами - параметры, используемые вместе с новым ключевым словом.
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
});
quick googling предлагает использовать функции (новый: Foo) как описание параметра. Однако этот подход теряет автозаполнение для параметров конструктора и/или возможных статических методов, которые имеет класс.
Конструкцию я надеюсь на это должно походить на один:
require(['foo'],
/** @param {Type<Foo>} Foo */
function(Foo) {
Foo.<cursor> <-- gives me an autocompletion for statics of Foo
});
Есть ли способ для достижения этой цели?