首页 > 解决方案 > 如果我为从 API 返回的数据创建接口。我如何处理它可能被改变的可能性?

问题描述

我正在尝试使用从 OpenWeather API 返回数据的简单天气网页来学习打字稿。我已经设置了一个接口来处理返回的数据对象。

我的问题是,如果他们决定更改该对象中的属性名称,我如何在不使用任何类型的情况下捕获它?

interface responseData {

   name: string;
   main: {
       temp: number;
       pressure: number;
       humidity: number;
   }
   sys: {
       country: string;
       sunrise: number
       sunset: number
   }
   weather: {
       0: {
           description: string;
           id: number;
           icon: string;
       }
   }
}

console.log(response.main.temp);

截至目前,console.log() 可以正常工作并记录预期的内容。但是,如果 OpenWeather 决定将“main”更改为“stats”。我该如何解释呢?

标签: typescript

解决方案


没有保证。

首先,TypeScript 在运行时不做任何事情,所以这对解决这个问题没有帮助。此外,这个问题本身既罕见又难以避免。

通常公共 API 提供商会在更新版本的 API 中进行更改,这需要不同的 URL 或不同的发送/接收标头等。

如果缺少一个属性,那么你真的无能为力。您不能只是“猜测”代码中替换它的属性。您所能做的就是寻找您需要的东西,如果没有找到,则显示错误消息(或根据场景默默隐藏相关功能)。

如果您不信任此 API 提供程序,您可以将所有属性标记为可选(添加?到每个属性名称),以便在您的代码中记得手动检查它们,然后由您的代码检查它们的值,并在缺少值时采取行动。


推荐阅读