«Объект, возможно, не определен» для элементов в массиве

#arrays #typescript #undefined

Вопрос:

Я знаю, что есть много вопросов об ошибках «Объект, возможно, не определен» в машинописном тексте, но я не нашел ответа на свой конкретный вопрос. У меня есть массив с элементами, и я хочу получить доступ к элементу по индексу. Я могу поместить проверки для каждой части элемента, к которому я хочу получить доступ, в оператор if вокруг него, но он все равно скажет мне, что он, возможно, не определен.

Мой код выглядит так:

 if(this.classLevels amp;amp; this.classLevels[finalLevel] amp;amp; 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 .

Я действительно не хочу отключать строгую неопределенную проверку, но если я не смогу заставить ее работать с элементами в массиве, мне, возможно, придется это сделать. Есть ли что-то, чего мне здесь не хватает?

Ответ №1:

Предполагая, что вы noUncheckedIndexedAccess включили, лучше всего было бы создать промежуточную переменную:

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

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

Комментарии:

1. Это работает, спасибо. Я не знал, что это происходит из-за другого флага машинописи, чем другая ошибка.