首页 > 解决方案 > 从 API 数据分配嵌套数组对象

问题描述

我有一个 Angular 的 TypeScript 类,如下所示:

import {HotelModel} from './hotel.model';
import {LocationModel} from './location.model';

export class CountryModel {
  id: number;
  name: string;
  description: string;
  countryFlagImagePath: string;
  themeFotoImagePath: string;
  hotels: HotelModel[];
  locations: LocationModel[];
  constructor(values: Object = {}) {
    Object.assign(this, values);
  }
}

我从 API 检索数据,其中模型对象与这些相似。构造assign函数中的 工作正常,直到我到达嵌套模型属性。

例如数组HotelModel。然后它只是将数据分配给普通对象数组而不是HotelModel.

嵌套属性是否有任何简单的方法(类似于对象分配,我不需要关心分配每个简单的类成员)?(如果可能对于嵌套 X 次的属性)?

标签: javascriptangulartypescript

解决方案


最直接的方法是利用常见的typescript JSON object mapper library之一

如果你用它作为 NPM 上的关键字搜索,你会发现其中的一些。大多数这些库通过使用 typescript 属性装饰器来定义如何将这些属性从普通对象/JSON 映射到新实例化的 JavaScript/TypeScript 类对象来实现映射功能。

我认为这正是您所需要的。但是,我不得不从您的代码示例中说,我没有看到这样做的真正好处。大多数情况下,您不需要真正的类对象,除非该对象涉及某种具有自己的类方法的业务逻辑。当类是来自端点响应的直接映射时,这通常不是最佳实践。

所以我建议,在你的场景中,使用接口而不是类,并且不要为映射它们而烦恼。


推荐阅读