2017-09-11 186 views
0

我有以下类:打字稿初始化二维数组

export class ReservationInfo { 
    public person: Person; 
    public reservation: Reservation; 

    constructor(person: Person, reservation: Reservation) { 
     this.person = person; 
     this.reservation = reservation; 
    } 

} 

这个类包含了两个自定义类。

export class Person { 
    public id: number; 
    public personal_no: number; 
    public first_name: string; 
    public last_name: string; 
    public email: string; 
    public gender: string; 
    public address: string; 
    public birthdate: Date; 
    public phone: string; 
} 
export class Reservation { 
    public id: number; 
    public create_date: Date; 
    public update_date: Date; 
    public personal_no: number; 
    public status_id: string; 
    public payment_status_id: string; 
    public payment_type: string; 
    public comment: string; 
    public res_type: string; 
    public reservationDetail: Array<ReservationDetail>; 
} 

预订类包含ReservationDetail类,它有数组列表类型ReservationPerson。

export class ReservationDetail { 
    public id: number; 
    public reservation_id: number; 
    public create_date: Date; 
    public update_date: Date; 
    public room_id: number; 
    public status_id: string; 
    public start_date: Date; 
    public end_date: Date; 
    public payment_type: string; 
    public adult: string; 
    public child: string; 
    public additional_bed: string; 
    public payment_status: string; 
    public category_id: number; 
    public category_name: string; 
    public extra_person: string; 
    public reservationPerson: Array<ReservationPerson>; 
    public reservationService: Array<ReservationServices>; 
    constructor(id: number, reservation_id: number, create_date: Date, update_date: Date, status_id: string, room_id: number, start_date: Date, end_date: Date, category_id: number, 
     reservationPerson: Array<ReservationPerson>, reservationService: Array<ReservationServices>) { 
     this.id = id; 
     this.reservation_id = reservation_id; 
     this.create_date = create_date; 
     this.update_date = update_date; 
     this.status_id = status_id; 
     this.room_id = room_id; 
     this.start_date = start_date; 
     this.end_date = end_date; 
     this.category_id = category_id; 
     this.reservationPerson = reservationPerson; 
     this.reservationService = reservationService; 
    } 
} 

这是我的ReservationPerson类与它的构造函数。

export class ReservationPerson { 
    public reservation_id: number; 
    public person_id: string; 
    public first_name: string; 
    public last_name: string; 

    constructor(person_id: string, first_name: string, last_name: string) { 
     this.person_id = person_id; 
     this.first_name = first_name; 
     this.last_name = last_name; 
    } 
} 

我有一个initialisation promlem。

当我尝试使用以下代码创建ReservationIfo类实例时,reservationPerson属性为null。

new ReservationInfo(new Person(null, null, '', '', '', '', '', new Date(), ''), new Reservation(null, null, null, null, null, [ 
     new ReservationDetail(null, null, null, null, null, null, null, null, null, [new ReservationPerson('a', 'b', 'c')], [new ReservationServices(null, 'a', 'b', 'v', 'dv')]) 
    ])); 

当我尝试下面的代码第二元件reservationPerson不为空。

new ReservationInfo(new Person(null, null, '', '', '', '', '', new Date(), ''), new Reservation(null, null, null, null, null, [ 
     new ReservationDetail(null, null, null, null, null, null, null, null, null, [new ReservationPerson('a', 'b', 'c')], [new ReservationServices(null, 'a', 'b', 'v', 'dv')]), 
     new ReservationDetail(null, null, null, null, null, null, null, null, null, [new ReservationPerson('a', 'b', 'c')], [new ReservationServices(null, 'a', 'b', 'v', 'dv')]) 
    ])); 

我想我有0索引元素的问题。

回答

0

您需要将参数添加到您的类中,以初始化它的方式进行初始化。

export class Person { 
    constructor(
     public id: number, 
     public personal_no: number, 
     public first_name: string, 
     public last_name: string, 
     public email: string, 
     public gender: string, 
     public address: string, 
     public birthdate: Date, 
     public phone: string 
    ) { } 
} 

documentation on parameter properties.

+0

ReservationDetail类已性质reservationPerson和reservationService,也有构造函数这就是有这样的特性:

要使用你正在使用new Person(null, null, '', '', '', '', '', new Date(), '')语法添加属性的参数属性创建Person对象。整个初始化是这个新的ReservationInfo(新的Person(..),新的Reservation(...,新的ReservationDetail(..,[new ReservationPerson('a','b','c')],[new ReservationServices (null,'a','b','v','dv')]), new ReservationDetail(...,[new ReservationPerson('a','b','c')],[new ReservationServices(null,'a','b','v','dv')]) ]));这里首先ReservationDetail没有ReservationPerson,但是当我打印时有秒。 –