'Object is possibly undefined' 用于数组中的项目

'Object is possibly undefined' for items in an array

我知道有很多关于打字稿中 'Object is possibly undefined' 错误的问题,但我还没有找到我的特定问题的答案。我有一个包含项目的数组,我想通过索引访问一个元素。我可以在它周围的 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.

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

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

const finalLevelClass = this.classLevels?.[finalLevel]?.class;

if (finalLevelClass) {
    finalLevelClass.currentLevel += 1;
}