Могу ли я решить эту проблему без строгих проверок Null: false? - PullRequest
0 голосов
/ 01 февраля 2020

Интересно, как я могу решить эту проблему, не установив для strictNullchecks значение false.

if (someArray.find(element => element.id === x.id) {
    return someArray.find(element => element.id === x.id).message
}

или

const x = someArray.find(element => element.id === x.id) ? someArray.find(element => element.id === x.id).message : "No message"

Как вы знаете, TypeScript показывает ошибку типа «Возможно, объект undefined ", когда я установил strictNullChecks в true.

Это лучший выбор для установки strictNullChecks в false?

------- добавленное содержание -------

снимок экрана

if (self.cases.find(element => element.code === self.statusCode)) {

                // NOTE: do not use 'case' to variable instead of the 'selectedCase'
                const selectedCase = self.cases.find(element => element.code === self.statusCode)
                console.log(selectedCase.message)
                return (
                    self.statusCode + " " + selectedCase.message
                )
            } 

Q1. Когда я пытаюсь использовать 'case' в качестве переменной. Требуется объявление переменной. это заранее объявленные слова?

Q2. console.log(selectedCase.message) и selectedCase.message также появляются ошибки Object is possibly undefined.

Почему это происходит ..?

1 Ответ

0 голосов
/ 01 февраля 2020

Вместо того, чтобы искать в массиве дважды, вы должны сохранить результат во временной переменной, а затем проверить, определено ли это.

Например:

const foundElement = someArray.find(...)

if (foundElement) {
  console.log(foundElement.message)
}
...