更好地转换模型Angular中的对象的方法

时间:2017-12-20 19:03:43

标签: angular typescript

假设我有来自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)?

2 个答案:

答案 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

相关问题