【问题标题】:'Object is possibly undefined' for items in an array数组中的项目的“对象可能未定义”
【发布时间】:2021-10-14 19:26:36
【问题描述】:

我知道有很多关于打字稿中的“对象可能未定义”错误的问题,但我还没有找到我的特定问题的答案。我有一个包含项目的数组,我想按索引访问一个元素。我可以在围绕它的 if 语句中检查我想要访问的元素的每个部分,但它仍然会告诉我它可能是未定义的。

我的代码如下所示:

if(this.classLevels && this.classLevels[finalLevel] && this.classLevels[finalLevel].class){
    this.classLevels[finalLevel].class.currentLevel += 1;
}

class 似乎是未定义的。它会自动想在那里放一个问号,例如this.classLevels[finalLevel].class?.currentLevel += 1;,但在这种情况下,我会收到The left-hand side of an assignment expression may not be an optional property access 的错误。

我真的不想禁用严格的未定义检查,但如果我不能让它与数组中的元素一起工作,我可能不得不这样做。我在这里有什么遗漏吗?

【问题讨论】:

    标签: arrays typescript undefined


    【解决方案1】:

    假设您启用了noUncheckedIndexedAccess,最好的办法是创建一个中间变量:

    const finalLevelClass = this.classLevels?.[finalLevel]?.class;
    
    if (finalLevelClass) {
        finalLevelClass.currentLevel += 1;
    }
    

    【讨论】:

    • 这行得通,谢谢。我不知道这是来自与其他错误不同的打字稿标志。
    猜你喜欢
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2019-08-05
    • 1970-01-01
    相关资源
    最近更新 更多