jsDoc @constructs не наследуется путем расширения объектов?

Я использую @lends + @constructs + @augments для определений классов MooTools (настраиваемый вариант пространства имен), однако у меня возникают некоторые проблемы с проверкой в ​​PhpStorm в расширяющих классах, если я не включаю инициализацию в расширяющий класс с помощью @ конструкции над ним. Разве в jsDoc нельзя пропустить инициализацию в расширяющих классах ИЛИ проверка PhpStorm просто работает неправильно?

new Class('Validator.Generic',
/**
 * @lends Validator.Generic
 */
{
    /**
     * @constructs
     */
     initialize:function(){}
}

new Class('Validator.Regex',
/**
 * @augments Validator.Generic
 * @lends Validator.Regex
 */
{
    //PhpStorm inspection reports unrecognized symbol Regex unless
    //I add a method with @constructs here, even though the class
    //it augments has a constructor
});

Я тоже пробовал вариации. Это работает только в том случае, если я добавляю инициализацию в расширяющий класс (например, Validator.Regex) вместе с тегом @constructs в докблок. Это конечно не идеально.


person Lance Caraccioli    schedule 15.03.2014    source источник
comment
добавьте /** @class Validator.Regex */ выше new Class('Validator.Regex') - это должно помочь   -  person lena    schedule 16.03.2014
comment
@lena Сделайте это ответом, чтобы я мог отдать вам должное. Похоже, это то, что мне нужно.   -  person Lance Caraccioli    schedule 18.03.2014


Ответы (2)


Попробуйте добавить /** @class Validator.Regex */ выше new Class('Validator.Regex')

person lena    schedule 18.03.2014
comment
Смотрите ответ, который я добавил для деталей - person Lance Caraccioli; 19.03.2014

Ответ @lena частично работает, но все еще произвольно не проходит проверку в, казалось бы, идентичных ситуациях. Я изменил свой подход и задумался о буквальном значении имен тегов. Вывод: '@class' предназначен для определения типа (псевдостатически), '@augments' и '@lends' в контексте языков на основе прототипа должны подразумевать расширения экземпляра. Это интуитивно понятно задним числом. Все проверки теперь проходят со следующим синтаксисом.

/** * @class Validator.Regex * @augments {Validator.Generic} */ new Class('Validator.Regex', /** * @lends {Validator.Regex} */ {} );

person Lance Caraccioli    schedule 18.03.2014
comment
Жаль, что этот синтаксис должен быть таким подробным, но, опять же, замена регулярного выражения PhpStorm в пути очень помогла ускорить процесс. - person Lance Caraccioli; 19.03.2014