【问题标题】:Variable used before being assigned分配前使用的变量
【发布时间】: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


【解决方案1】:

我已经解决了 ! 非空断言运算符的问题

let trait!: TraitInterface

现在可以了

这里是答案:In Typescript, what is the ! (exclamation mark / bang) operator when dereferencing a member?

【讨论】:

    猜你喜欢
    • 2020-05-22
    • 1970-01-01
    • 2019-11-06
    • 2021-08-16
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    相关资源
    最近更新 更多