WebStorm 抱怨 "not assignable" 返回新对象(JSDoc 相关)

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

我有以下 JSDoc 定义:

/**
 * @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
 */

和我的函数 return 一个这样的结构:

/**
 * @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;
};

我收到了这个警告:

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

谢谢

记录为WEB-21392,请关注更新。我建议改用@typedef:

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

或者,您可以使用 @return {typeof DailyCountersNode} 而不是 @return {DailyCountersNode}