【问题标题】:WebStorm complains "not assignable" on returning new object (JSDoc related)WebStorm 在返回新对象时抱怨“不可分配”(JSDoc 相关)
【发布时间】:2016-08-14 01:20:03
【问题描述】:

我有以下 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 {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;
};

我收到了这个警告:

返回表达式类型 [BuyGold: number, BuyStamina: number....blah blah blah] 不能分配给键入 DailyCountersNode

谢谢

【问题讨论】:

    标签: javascript webstorm jsdoc


    【解决方案1】:

    登录为WEB-21392,请关注它以获取更新。我建议改用@typedef:

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

    或者,您可以使用@return {typeof DailyCountersNode} 代替@return {DailyCountersNode}

    【讨论】:

    • 我实际上是在使用@@typedef,但是在我切换到使用@@name 之前,webstorm 只是无法识别我的对象正确突出显示我的所有引用...
    • WEB-21392 以 @return {typeof OBJNAME} 回应,这很有效。如果您可以更新答案让我标记,而不是我为自己的问题提交另一个答案,那就更好了。
    • 完成。但是@typedef 也是一个有效的解决方案,它对我有用
    • @len 是 typeof JSDoc 的 WebStorm 扩展?
    • typeof 在 jsdoc 中无效,仅在 typedoc 中有效
    猜你喜欢
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 2015-04-30
    • 1970-01-01
    • 2016-08-31
    • 2020-11-12
    相关资源
    最近更新 更多