Хорошо, я предполагаю, что я пропустил что-то действительно простое на этом.
Давайте скажем, что у меня есть несколько методов, которые повторяют много таких же вещей, как это:
public getDepartments(id: number): ng.IPromise<IDepartmentViewModel[]> {
this.common.loadStart();
return this.unitOfWork.teamRepository.getDepartmentsForTeam(id).then((response: IDepartmentViewModel[]) => {
this.common.loadComplete();
return response;
}).catch((error) => {
this.common.loadReset();
return error;
});
}
Тонны шаблона для одного вызова this.unitOfWork.teamRepository.getDepartmentsForTeam(id)
поэтому я хотел создать общую оболочку для шаблона, например:
private internalCall<T>(method: () => ng.IPromise<T>): ng.IPromise<T> {
this.common.loadStart();
return method().then((response: T) => {
this.common.loadComplete();
return response;
}).catch((error) => {
this.common.loadReset();
return error;
});
}
Что я мог бы тогда назвать:
public getDepartments(id: number): ng.IPromise<IDepartmentViewModel[]> {
return this.internalCall<IDepartmentViewModel[]>(this.unitOfWork.teamRepository.getDepartmentsForTeam(id));
Но я получаю следующую ошибку:
Supplied parameters do not match any signature of call target:
Type '() => ng.IPromise<IDepartmentViewModel[]>' requires a call signature, but type 'ng.IPromise<IDepartmentViewModel[]>' lacks one.
Каков правильный способ передать мой метод в другой, чтобы вызвать его с предоставленными параметрами?