Почему не срабатывает такой код?
Есть такая строка:
const id = this.data.test.id
Но бывает так что this.data может содержать немного другую структуру, и тогда чтобы получить id нужно делать так:
const id = this.data.testID
В коде я сделал так:
const id = this.data.test.id || this.data.testID;
Но в итоге приложение падает с ошибкой
TypeError: Cannot read properties of undefined (reading 'id')
Буду благодарен за помощь!
Ответы (2 шт):
Автор решения: smellyshovel
→ Ссылка
const id = this.data.test.id || this.data.testID;
Решение "в лоб" - поменять местами:
const id = this.data.testID || this.data.test.id;
Иное решение - использовать тернарный условный оператор:
const id = this.data.test ? this.data.test.id : this.data.testID;
Третий вариант - optional chaining вместе с nullish coalescing:
const id = this.data.test?.id ?? this.data.testID;
Почему выдает ошибку? Потому что объект this.data.test равен undefined. А вы пытаетесь обратиться к свойству id этого объекта.
Автор решения: Nikita
→ Ссылка
Можно сделать вот так:
const id = this.data?.test?.id || this.data?.testID;