Search code examples
javascriptwebstormjsdoc

WebStorm complains "not assignable" on returning new object (JSDoc related)


I have the following JSDoc definition:

/**
 * @name DailyCountersNode
 * @type Object
 * @property {number} BuyGold
 * @property {number} BuyStamina
 * @property {number} MarketReset
 * @property {Object.<string,int>} BossCleared
 * @property {Object.<string,int>} BossResets
 * @property {number} NextResetAt
 */

and my function return one such structure:

/**
 * @return {DailyCountersNode}
 * */
Player.prototype.getDailyCountersNode = function(){
    if(!this.mPlayerData.hasOwnProperty("DailyCounters")){
        var defVal = {
            BuyGold: 0,
            BuyStamina: 0,
            MarketReset: 0,
            BossCleared:{},
            BossResets:{},
            NextResetAt: 0
        };
        return defVal;
    }
    return this.mPlayerData.DailyCounters;
};

And I got this warning:

Returned expression type [BuyGold: number, BuyStamina: number....blah blah blah] is not assignable to type DailyCountersNode

enter image description here

Thanks


Solution

  • Logged as WEB-21392, please follow it for updates. I'd suggest using @typedef instead:

    /**
     * @typedef {Object} DailyCountersNode
     * @type Object
     * @property {number} BuyGold
     * @property {number} BuyStamina
    ...
    

    Or, you can use @return {typeof DailyCountersNode} instead of @return {DailyCountersNode}