假设我有来自HTTP请求的以下对象:
{
id: 'someid',
name: 'Jonh',
age: 23
}
和user.model.ts
export class User {
id: string,
name: string,
age?: number,
}
从该对象创建新User
的更好方法是什么?我们可以像这样使用constructor
:
\\user.model.ts
...
constructor(obj: Object) {
this.id = obj.id;
this.name = obj.name
this.age = obj.age
}
并致电new User(object)
。是否有另一种方法可以在接收到的对象的函数中实例化这样的模型而不在构造函数中分配所有模型属性(this.prop = obj.prop
)?
答案 0 :(得分:3)
你应该可以按原样去做。
\\user.model.ts
...
export class User
{
public id:string;
public name:string
public age :number
}
假设您从服务
获取以下内容let userData={
id: 'someid',
name: 'Jonh',
age: 23
}
然后
let user=new User();
user=userData;
应该有效
答案 1 :(得分:0)
RRForUI答案和Benedikt Schmidt评论解决了这个问题,如果我想模拟充当接口。
如果我希望对象继承模型属性(如果它有一些),它将无法工作(至少在我的测试中)。如果模型有isYoung
方法,即:
\\user.model.ts
...
export class User
{
public id:string;
public name:string
public age :number
public isYoung?() {
return this.age < 100 ? true : false;
}
},
该方法无法反对。解决此问题的方法是使用Object.assign
:
user = Object.assign(new User, user),
向用户(来自服务的传入数据)提供方法ìsYoung
。