【发布时间】:2021-09-13 11:12:02
【问题描述】:
我的打字稿错误说:Variable 'trait' is used before being assigned.
那就是pickedTraits.push()
我不明白,我声明了trait 并在循环开始时分配了它,为什么打字稿会抱怨?
当我把它放在while循环之外时它可以工作,但我需要它在里面
layers.map((layer) => {
let stop = true
let trait: TraitInterface
while (stop) {
trait = utilsService.pickRandomTrait(layer.traits)
let reachedMaxmimum = alreadyPicked.findIndex(
({ traitId, appeared }) =>
trait._id.equals(traitId) && (appeared ?? 0) >= trait.showUp
)
if (reachedMaxmimum !== -1) {
layer.traits = layer.traits.filter(
({ _id }) => !_id.equals(alreadyPicked[reachedMaxmimum].traitId)
)
} else {
alreadyPicked.push({
traitId: trait._id,
appeared: 1,
})
stop = false
continue
}
}
pickedTraits.push({
name: trait.name,
rarity: trait.rarity,
layerName: layer.name,
})
return drawingService.addLayer(
context,
trait.src,
size.height,
size.width
)
})
【问题讨论】:
-
请包含pickTraits初始化代码。我怀疑它没有正确完成
-
@PrakashS 错误来自
trait而不是pickedTraits
标签: javascript node.js typescript