'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;
}
我知道有很多关于打字稿中 '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;
}