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