代码之家  ›  专栏  ›  技术社区  ›  POV

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

  •  -1
  • POV  · 技术社区  · 6 年前

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

    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 .

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

    因为当我调用方法时: getModel() 它返回错误:无属性 type .

    2 回复  |  直到 6 年前
        1
  •  -1
  •   racamp101    6 年前

    检查它是否为空并设置它

    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;
      }
    
    }
    
        2
  •  -1
  •   T.J. Crowder    6 年前

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

    它不允许是空对象;您的接口清楚地表明它有三个必需的属性。

    如果这些属性中的某些/全部是可选的,则可以使用 ? 在属性名和之间 : 在接口中,但如果它们不是可选的,则传递 {} 进入构造函数是一个错误,typescript正确地引发了它。