接口类型未定义的对象

时间:2019-05-16 16:26:33

标签: angular

我想创建和初始化接口类型IClassificationOverride的对象。我收到未定义对象的运行时错误。我无法理解这里的问题。如果您在下面看到我正在初始化的对象,则类型为IClassificationOverride

classificationOverride: IClassificationOverride;
this.classificationOverride.ManagerStrategyId =  this.managerStrategyId;
this.classificationOverride.ProductId = this.selectedProductItem.Id;
this.classificationOverride.LegacyStrategyId = this.selectedReportingItem.Id;
this.classificationOverride.ManagerStrategyTypeId = this.selectedStrategyItem.Id;

界面

    export interface IClassificationOverride {
    ID: number;
    ManagerStrategyId: number;
    ProductId: number;
    StrategyId: number;
    LegacyStrategyId: number;
    ManagerStrategyTypeId: number;
    }

1 个答案:

答案 0 :(得分:0)

classificationOverride: IClassificationOverride;

只声明变量的类型。它不会创建对象(这就是为什么值仍然为undefined的原因。)

您实际上需要创建这种类型的对象:

classificationOverride = new IClassificationOverride();

Buuuut,它不起作用,因为您使用的是interface而不是class

因此,您需要自己创建对象:

classificationOverride = <IClassificationOverride>{
  ManagerStrategyId: this.managerStrategyId,
  ProductId: this.selectedProductItem.Id,
  /* ... */
}