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);