Машинописный текст, объект, возможно, не определен внутри нулевой проверки

#typescript #undefined #null-check

Вопрос:

Мне интересно, как этот код дает object is possibly undefined error

   if (newFocus) {
    if (viewCache[viewId] !== undefined) {
      dispatch(ViewActions.focusOn(viewCache[viewId].focus));
    } else {
      dispatch(ViewActions.focusOn(newFocus));
    }
  }
 

и строка 3 выдает мне ошибку, viewCache[viewId] is possibly undefined даже когда она завернута в if (viewCache[viewId] !== undefined)

Ответ №1:

Ошибка, похоже, указывает на то, что это viewCache может быть undefined . Вы также можете добавить проверку на его существование

 if (newFocus) {
    if (viewCache amp;amp; viewCache[viewId] !== undefined) {
      dispatch(ViewActions.focusOn(viewCache[viewId].focus));
    } else {
      dispatch(ViewActions.focusOn(newFocus));
    }
  }