【发布时间】:2018-04-05 19:24:35
【问题描述】:
我有以下按接口类型填充对象的函数:
public _fillAddModel<T>(lessonId: number, studyPeriodId: number, confirmed: boolean = false): T {
let data: T;
data = {
lesson: this.substitution.lessonNumber,
schoolStudyPeriod: GlobalModel.getSelectedPeriod().id,
confirmed: true
};
return data;
}
这样调用:
let data = this._fillAddModel<ISubstitutionModelTeacher>(1, 2, true);
let data = this._fillAddModel<ISubstitutionModelAddTeacherSubject>(1, 2, true);
如您所见,我尝试通过接口填充对象:T 然后继续填充此接口:
data.subsDate = this.substitution.date;
所有接口扩展主接口:ISubstitutionModelAdd:
export interface ISubstitutionModelTeacher extends ISubstitutionModelAdd {
newTeacher: number;
subsDate: string;
}
export interface ISubstitutionModelAddTeacherSubject extends ISubstitutionModelAdd {
newTeacher: number;
subsDate: string;
classSubject: number;
}
export interface ISubstitutionModelAddFree extends ISubstitutionModelAdd {
subsDate: string;
remark: string;
}
我的问题是通过默认接口ISubstitutionModelAdd 填充对象,然后返回对象并通过接口T 填充这些附加数据。
【问题讨论】:
-
所以
_fillAddModel填充了常用部分,而您希望能够在同一个调用中填充不常用部分? -
是的,我需要填写公共部分:
fillAddModel然后继续填写剩余部分 -
也许以某种方式通过接口加入对象我的意思是加入输出
fillAddModel和对象ISubstitutionModelAddFree然后继续填充?