Javascript 角度6 ES6启动对象阵列

Javascript 角度6 ES6启动对象阵列,javascript,angular,typescript,class,es6-class,Javascript,Angular,Typescript,Class,Es6 Class,我对javascript真的很陌生 我有一个嵌套的类结构,需要使用json对象初始化它。我的问题是如何启动EventDate对象数组并在CustomerEvents构造函数中分配给this.dates export default class CustomerEvent { constructor(customer_event: any) { this.event_title = customer_event.event_title;

我对javascript真的很陌生

我有一个嵌套的类结构,需要使用json对象初始化它。我的问题是如何启动EventDate对象数组并在CustomerEvents构造函数中分配给this.dates

   export default class CustomerEvent {
        constructor(customer_event: any) {
            this.event_title = customer_event.event_title;
            this.customer = customer_event.customer;
            this.total_budget = customer_event.total_budget;
            this.no_of_people = customer_event.no_of_people;
            this.dates = /**array of new EventDate(customer_event.dates) **/;
        }
        event_title: string;
        customer: Customer;
        total_budget: number;
        no_of_people: number;
        dates: EventDate[];

    }

    class EventDate {
        constructor(date: any) {
            this.start_date = date.start_date;
            this.end_date = date.end_date;
        }
        start_date: Date;
        end_date: Date;
    }

如果有人能在这方面帮助我,那将非常有帮助。谢谢

只需分配新的空数组,如下所示:

constructor(customer_event: any) {
  this.event_title = customer_event.event_title;
  this.customer = customer_event.customer;
  this.total_budget = customer_event.total_budget;
  this.no_of_people = customer_event.no_of_people;
  this.dates = [];
}
export interface EventDate {
  start_date: Date;
  end_date: Date;
}

export interface CustomerEvent {
  event_title: string;
  customer: Customer;
  total_budget: number;
  no_of_people: number;
  dates: EventDate[];
}
const customerEvent: CustomerEvent = {
  event_title: 'Some Title',
  customer: { /*An Object representing a Customer Type*/ }
  total_budget: 123,
  no_of_people: 456,
  dates: [{
    start_date: new Date(),
    end_date: new Date()
  }]
};
如果需要强制转换传入阵列,可以执行以下操作:

...
this.dates = customer_event.dates.map(date => new EventDate(date));
...
对数据模型使用
接口
s,而不是
es:

考虑为数据模型使用接口

也就是说,您可以像这样重构代码:

constructor(customer_event: any) {
  this.event_title = customer_event.event_title;
  this.customer = customer_event.customer;
  this.total_budget = customer_event.total_budget;
  this.no_of_people = customer_event.no_of_people;
  this.dates = [];
}
export interface EventDate {
  start_date: Date;
  end_date: Date;
}

export interface CustomerEvent {
  event_title: string;
  customer: Customer;
  total_budget: number;
  no_of_people: number;
  dates: EventDate[];
}
const customerEvent: CustomerEvent = {
  event_title: 'Some Title',
  customer: { /*An Object representing a Customer Type*/ }
  total_budget: 123,
  no_of_people: 456,
  dates: [{
    start_date: new Date(),
    end_date: new Date()
  }]
};
现在,在初始化时,您可以这样做:

constructor(customer_event: any) {
  this.event_title = customer_event.event_title;
  this.customer = customer_event.customer;
  this.total_budget = customer_event.total_budget;
  this.no_of_people = customer_event.no_of_people;
  this.dates = [];
}
export interface EventDate {
  start_date: Date;
  end_date: Date;
}

export interface CustomerEvent {
  event_title: string;
  customer: Customer;
  total_budget: number;
  no_of_people: number;
  dates: EventDate[];
}
const customerEvent: CustomerEvent = {
  event_title: 'Some Title',
  customer: { /*An Object representing a Customer Type*/ }
  total_budget: 123,
  no_of_people: 456,
  dates: [{
    start_date: new Date(),
    end_date: new Date()
  }]
};

自己创建这些实例:

constructor(customer_event: any) {
    this.event_title = customer_event.event_title;
    this.customer = customer_event.customer;
    this.total_budget = customer_event.total_budget;
    this.no_of_people = customer_event.no_of_people;
    this.dates = customer_event.dates.map(date => new EventDate(date));
}