jsDoc @constructs不是通过扩展对象继承的吗?

时间:2014-03-15 08:29:47

标签: mootools phpstorm jsdoc

我正在使用@lends + @constructs + @augments进行MooTools类定义(自定义命名空间变体),但是如果我在扩展类中不包含初始化,我在扩展类中会在PhpStorm中遇到一些检查问题上面有@constructs。在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标记添加到docblock时才有效。这当然不太理想。

2 个答案:

答案 0 :(得分:1)

尝试在/** @class Validator.Regex */

之上添加new Class('Validator.Regex')

答案 1 :(得分:0)

@ lena的答案部分有效,但在看似相同的情况下仍然无法检查。我改变了我的方法,并考虑了标签名称的字面含义。结论:' @ class'是定义一个类型(伪静态),' @ augments'和' @ lends'然后,在基于原型的语言的上下文中应该暗示实例扩展。这在后视中是直观的。所有检查现在都通过以下语法传递。

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