【问题标题】:Typescript object property 'undefined' while it is not打字稿对象属性“未定义”,而它不是
【发布时间】:2021-09-29 14:40:38
【问题描述】:

我对 Typescript 还很陌生,并且正在努力解决看似愚蠢的问题:

我从服务中检索“代理”对象。

this.agentsController.getAgent(matricule).subscribe({
      next: agent => {
        console.log(agent)
        console.log(agent.emailPro)
      },
      error: (error: string) => {
        console.log(error)
      }
    });

根据第一个console.log,它填充得很好:

{
    "agent": {
        "matricule": "000001",
        "nom": "DummyName",
        "prenom": "DummyFirstname",
        "emailPro": "dummy@dummy.fr",
        "adresse1": "dummy address",
        "telephonePerso": "0000000001"
    }
}

但正如代理的打印显示明确定义的电子邮件地址 (emailPro) 一样,第二个 console.log 始终显示 undefined

这怎么可能? 我错过了什么?

【问题讨论】:

  • 我相信不是这样@T.J.Crowder 错误似乎是正确的字段是agent.agent.emailPro
  • @pietro909 - 大眼睛! 这真是一个非常非常好的收获。肯定会有重复的,尽管它几乎属于“错字”类别......
  • > 大眼睛!最近做了 LASIK,非常欢迎您的发言
  • 你的敏捷给我留下了深刻的印象!现在效果很好。最后,我修复了我的服务,使其返回实际的代理,而不是一些名为“代理”的对象,其中包含我的正确代理。这就是让我产生这种困惑的原因。再次感谢
  • @T.J.Crowder 非常高兴 :-) 我真的很害怕,但决定试一试。准备好放松一些夜视,但早上有时会感到不舒服(眼睛干涩)。我对这两个问题都很好,我会说我的生活质量有所提高。

标签: angularjs typescript undefined


【解决方案1】:

将 cmets 链总结为有效响应:

我的服务将我的正确代理对象封装在其他一些恰好也称为“代理”的虚拟对象中。 因此混乱!

所以我应该打电话给agent.agent.EmailPro,而不是打电话给agent.EmailPro

我选择修复我​​的服务,以便更好地解析 API 响应:

来自this.httpClient.get('apiUrl').pipe(map((result:any) => result as Agent));

this.httpClient.get('apiUrl').pipe(map((result:any) => result.agent as Agent));

再次感谢@pietro909 和@T.J.Crowder

【讨论】:

    猜你喜欢
    • 2018-01-16
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 2021-12-16
    相关资源
    最近更新 更多