Javascript 在typescript中扩展接口/类型

Javascript 在typescript中扩展接口/类型,javascript,angular,typescript,Javascript,Angular,Typescript,我扩展了我的filtermatadata类型,添加了一个动态模型,该模型对于不同的实体具有不同的结构,但不知何故,typescript无法识别我的对象属性。我可能遗漏了什么 接口 export type FilterMetaData<T extends {}> = T & { filterCriteriaID: number; filterCriteriaName?: string; isDefaultSelected?: boolean

我扩展了我的
filtermatadata
类型,添加了一个动态模型,该模型对于不同的实体具有不同的结构,但不知何故,typescript无法识别我的对象属性。我可能遗漏了什么

接口

 export type FilterMetaData<T extends {}> = T & {
      filterCriteriaID: number;
      filterCriteriaName?: string;
      isDefaultSelected?: boolean;
      isExpanded?: boolean;
    }

    export interface DateRange {
      data?: DateRangeData;
    }

    export interface DateRangeData {
      min?: Date;
      max?: Date;
    }

    export interface Range {
      data?: RangeData;
    }

    export interface RangeData {
      currency?: string;
      timePeriod?: string;
      min?: number;
      max?: number;
      step?: number;
    }

    export interface Select {
      data?: SelectData[];
    }

    export interface SelectData {
      id?: number;
      name?: string;
      isSelected?:boolean|false;
      parentID?: number | null;
      parentName?: string;
    }
导出类型filtermatadata=T&{
filterCriteriaID:编号;
filterCriteriaName?:字符串;
isDefaultSelected?:布尔值;
isExpanded?:布尔值;
}
导出接口日期范围{
数据?:日期范围数据;
}
导出接口DateRangeData{
min?:日期;
max?:日期;
}
导出接口范围{
数据?:范围数据;
}
导出接口范围数据{
货币?:字符串;
时间段?:字符串;
min?:数字;
最大?:数字;
步骤?:编号;
}
导出接口选择{
数据?:选择数据[];
}
导出接口SelectData{
id?:编号;
名称?:字符串;
isSelected?:布尔值| false;
parentID?:编号|空;
parentName?:字符串;
}
课堂实施

helper<T1 extends FilterMetaData<T2>>(filter) {
    this.selectedFilterService.getAppliedFilterMasterData<T1>(filter)
      .pipe(takeUntil(this.unsubscribe$))
      .subscribe((filterData: T1) => {
        if (filter.isDefaultSelected) {
          filterData.isExpanded = false;
          filterData.data.forEach((data) => data.isSelected = false);
          this.selectedFilters.result.select.push(filterData);
          this.loadComponent(new FilterComponentType(SelectComponent, filterData));
        } else {
          this.removeComponent(filter);
        }
      }, err => {
        this.toastrService.error(err);
      })
  }
helper(过滤器){
此.selectedFilterService.getAppliedFilterMasterData(过滤器)
.pipe(takeUntil(此.unsubscribe$))
.订阅((filterData:T1)=>{
如果(已选择filter.isDefaultSelected){
filterData.isExpanded=false;
filterData.data.forEach((数据)=>data.isSelected=false);
this.selectedFilters.result.select.push(filterData);
this.loadComponent(新的FilterComponentType(SelectComponent,filterData));
}否则{
此。移除组件(过滤器);
}
},err=>{
此.toastrService.error(错误);
})
}
使用如下类型的参数调用函数:——

this.helper(过滤器);
请发布一段您的代码,并明确说明您被卡在哪里以及您收到的错误消息。人们会乐意帮忙的。
this.helper<FilterMetaData<Select>>(filter);