我有一个如下所示的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次的属性)?
答案 0 :(得分:1)
最直接的方法是利用常见的 typescript JSON对象映射器库之一
如果将其用作在NPM上搜索的关键字,则会发现其中的一些。这些库中的大多数库都通过使用typescript属性装饰器来定义如何将这些属性从纯对象/ JSON映射到新实例化的JavaScript / TypeScript类对象来实现映射功能。
我认为这正是您所需要的。但是,我必须从您的代码示例中说出,这样做并没有真正的好处。大多数时候,您不需要真正的类对象,除非该对象使用自己的类方法参与某种业务逻辑。当类是端点响应的直接映射时,这通常不是最佳实践。
因此,在您的情况下,我建议使用接口而不是类,并且不要为映射它们而烦恼。
答案 1 :(得分:-1)
有什么简单的方法-不,您应该跟踪事件并重新映射
Builder或factory method模式适合这种情况