【问题标题】:Is there a way to always use Optional-chaining in Angular有没有办法在 Angular 中始终使用可选链接
【发布时间】:2022-01-05 10:22:46
【问题描述】:

我正在使用一个 Angular 应用程序,其中 api 响应可能会丢失一些预期数据。

这可能会使应用程序崩溃,一个简单的解决方法是使用可选链;

foo.bar.baz => foo.bar?.baz

是否有一种设置或方法来处理所有的 '.'作为 '?。'出于某种原因,这会是一个坏主意吗?

【问题讨论】:

  • 如果您不能依赖 API 返回的某些道具的存在(尤其是当它是第三方 API 时),避免“未定义”错误绝对是个好主意 - 但是我不知道有任何这样的设置,Rick & Morty 需要在处理响应时在需要的地方实现可选的链接自己..
  • 你的 TypeScript 是否启用了严格的 null 检查?编译器应该会为您发现这些错误。

标签: javascript angular typescript


【解决方案1】:

就我浏览官方 Angular 和 Typescript 文档而言,没有这样的选项。 而且不应该。

这绝对是个坏主意。 这将导致“静默”错误,随着系统的增长将很难找到。

例如如果您有以下型号:

interface ContactInfoDTO {
   email: string;
   phone: string;
}

interface UserDTO {
   name: string;
   contactInfo: ContactInfoDTO;
}

并且您假设系统中的每个用户都应该有一个有效的联系信息。 当您访问电子邮件属性 user?.contactInfo?.email 时,您可能会遇到错误,因为没有引发错误,因此您不知道您的数据实际上有问题。

谨慎使用可选链,仅在您知道某些数据可能因某种原因未定义的情况下。

关于这个问题有一篇很好的文章: https://medium.com/@a.hafez852/is-optional-chaining-really-a-good-addition-to-javascript-e4bbbc31909f

【讨论】:

    猜你喜欢
    • 2019-05-28
    • 1970-01-01
    • 2017-12-25
    • 2018-02-02
    • 2021-05-06
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多