使用"类"容器对象时,Closure Compiler @extends不起作用

ans*_*art 3 javascript google-closure-compiler

我正在为闭包编译器注释我的所有javascript,但是 - 我目前的代码在很大程度上取决于在对象中定义类,即:

Class.SomeClass = function() {};
Class.SomeOtherClass = function() {};
Run Code Online (Sandbox Code Playgroud)

而不是:

function SomeClass() {};
SomeClass.prototype = {};
Run Code Online (Sandbox Code Playgroud)

但是,它在尝试注释扩展时给了我一个警告......编译器声明我无法确定Class.SomeClass是什么类型:

JSC_TYPE_PARSE_ERROR: Bad type annotation. Unknown type Class.SomeObject 
*  @extends Class.SomeObject
Run Code Online (Sandbox Code Playgroud)

使用ADVANCED_OPTIMIZATIONS将以下代码粘贴到闭包编译器中:

// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level ADVANCED_OPTIMIZATIONS
// ==/ClosureCompiler==

(function($) {

    "use strict";

    var Class = {};

    /**
     *  @constructor
     */
    Class.ObjectA = function() {};
    Class.ObjectA.prototype = {};

    /**
     *  @constructor
     *  @extends Class.ObjectA
     */
    Class.ObjectB = function() {};
    Class.ObjectB.prototype = $.extend(new Class.ObjectA(), {
        initialize: function() {}
    });


    window.test = new Class.ObjectB();
    window.test.initialize();

})(jQuery);
Run Code Online (Sandbox Code Playgroud)

Cha*_*rth 6

答案并不明显.您只需要@constClass命名空间中添加一个.

/** @const */
var Class = {};
Run Code Online (Sandbox Code Playgroud)