Ошибка Angular 7+: «свойство недоступно для типа объекта»

Я использую службу, чтобы сделать простой HTTP-запрос на получение API, и запрос выполнен успешно. Я возвращаю объект со свойствами и их значениями, и когда я подписываюсь и регистрирую ответ, все работает нормально. Если затем я попытаюсь получить доступ к свойству в ответе, например (console.info(response.title), я получаю сообщение об ошибке, что свойство недоступно для объекта. Что для меня странно, так это то, что свойства определены как часть объект ответа.Если я игнорирую ошибку, программа компилируется и обслуживается на Localhost, и то же свойство, выдающее ошибку, регистрируется в консоли.Я даже использовал одно и то же свойство для вывода текста в DOM, и он отображается, но все же ошибка показывает и это происходит со всеми свойствами объекта ответа. Является ли это ошибкой или я что-то упускаю? Я не хочу менять ответ, потому что это уже объект, который мне нужен.

Можете ли вы добавить демонстрацию или код stackblitz, чтобы лучше понять.

nitin9nair 03.07.2019 09:21

Укажите Минимальный воспроизводимый пример.

youri 03.07.2019 09:22

Вероятно, вы пытаетесь прочитать свойства response вне блока subscribe. Если это действительно так, прочтите мой ответ в этой теме.

SiddAjmera 03.07.2019 09:52

Я делаю все в блоке подписки, и значения фактически регистрируются в консоли.

Clearbryan 03.07.2019 10:01
stackblitz.com/edit/…
Clearbryan 03.07.2019 10:02
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
2
5
83
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

What's strange to me is that the properties are defined as part of the response object.

Не имеет значения. Ошибка, которую вы получаете, - это статические ошибки TypeScript. Во время компиляции TypeScript не имеет представления о форме ответа от API. Вы можете сказать: где у вас есть http.get(//...args), указать: http.get</* type declaration here */>(//... args), даже http.get<any>//... должен решить проблему.

Вы также можете сделать это во время потребления: console.info((response as any).title), например.

Вот вилка вашего stackblitz:

https://stackblitz.com/edit/angular-ziheza?file=src%2Fapp%2Ftest.service.ts

Другие вопросы по теме