Я не понимаю, почему я получаю сообщение об ошибке «Возможно, объект не определен» в this.selectedBugReport. Я убеждаюсь, что он не может быть неопределенным, и сохраняю результат в константе. Но это проблема для Angular?
Ошибка
const test = this.selectedBugReport !== undefined;
if (test) // if (test === true) also errors
{
// @ts-ignore
const i = this.selectedBugReport.id; // << no error because of ignore
const h = this.selectedBugReport.id; // <<< error!!
}
Нет ошибок
if (this.selectedBugReport !== undefined)
{
// @ts-ignore
const i = this.selectedBugReport.id; // << no error
const h = this.selectedBugReport.id; // <<< no error
}
Я использую Angular 11 и IDE WebStorm, если это имеет значение.
Обновление:
Является ли это лучшей практикой, чтобы заставить его работать (для более сложных случаев, чтобы избежать более 100 операторов if)?
const test: MyDto = this.selectedBugReport as MyDto; // This line looks stupid to me.
const foo = test.id; // no error, no if-checks required anymore.
if
не должна бытьif(this.selectedBugReport)
? - person Bojan Kogoj   schedule 06.01.2021const test = this.selectedBugReport as MyDto;
илиconst test: MyDto = this.selectedBugReport;
(в зависимости от того, как набираетсяselectedBugReport
). Только одна сторона должна быть явно введена. И это не взлом; становится ясно, к какому типу относятся ваши объекты. Вам не нужны никакиеif
, если вы правильно ввели свои объекты и свойства. - person Heretic Monkey   schedule 06.01.2021this.selectedBugReport?.id
- person Antoniossss   schedule 06.01.2021