如何通过接口初始化对象?

时间:2018-10-22 16:52:42

标签: typescript

我有自定义类和已实现的接口:

interface IFilterWeekScheduleClassShort {
   type: string;
   id: number;
   name: string;
}

export class FilterWeekScheduleClass extends Filter {
  public constructor(public model: IFilterWeekScheduleClassShort) {
    super(model);
  }

  public getModel() {
        return this.model.type;
  }

}

当我创建此类的实例时,我在类型为model的构造函数中传递了IFilterWeekScheduleClassShort

默认情况下如何初始化对象model如果将模型传递为空对象:{}

因为我在调用方法getModel()时返回错误:没有属性type

2 个答案:

答案 0 :(得分:-1)

  

默认情况下如何初始化对象model如果将模型传递为空对象:{}

不允许为空对象;您的界面明确表示它具有三个必需的属性。

如果其中某些/全部属性是可选的,则可以在界面的属性名和?之间用:标记为可选,但如果不是可选的,则传递{ {1}}进入构造函数是错误的,而TypeScript是正确的引发它。

答案 1 :(得分:-1)

检查其空值并将其设置

interface IFilterWeekScheduleClassShort {
   type: string;
   id: number;
   name: string;
}

export class FilterWeekScheduleClass extends Filter {
  public constructor(public model: IFilterWeekScheduleClassShort) {
    if(model == null) model = new FilterWeekScheduleClassShort();
    super(model);
  }

  public getModel() {
        return this.model.type;
  }

}