Search code examples
javascriptgoogle-closure-compilerbundling-and-minificationgoogle-closure-library

Google Closure Compiler, Handling JSC_INEXISTENT_PROPERTY warning


How can I get rid of the warnings on running the following code through Google Closure Compiler Advance mode?

var defaults = {
    team : 'ABC',
    wr:  'Calvin',
    qb: 'Manning'
};

var config = {};

var setters = {
    team : function(){ return defaults.team},
    wr : function(){ return defaults.wr}
};

for(var i in setters){
    config[i] = setters[i].call();
}


alert( config.team);
alert( config.wr);

Number of warnings: 2

JSC_INEXISTENT_PROPERTY: Property team never defined on config at line 19 character 7
alert(config.team);

   ^
 JSC_INEXISTENT_PROPERTY: Property wr never defined on config at line 20 character 7
 alert(config.wr);


   ^

Solution

  • Found it.

    @lends does the trick.

    lends tag

    var defaults = {
        team : 'ABC',
        wr:  'Calvin',
        qb: 'Manning'
    };
    var config = {};
    
    
    var setters = 
    /** @lends {config} */
    {
        team : function(){ return defaults.team},
        wr : function(){ return defaults.wr}
    };
    
    for(var i in setters){
        config[i] = setters[i].call();
    }
    
    
    alert(config.team);
    alert(config.wr);