OK Zgaduję, że brakuje mi czegoś naprawdę prostego na tym.Dostarczone parametry nie pasują do żadnego podpisu celu połączenia w metodzie opakowywania - Types
Powiedzmy mam wiele metod, które powtarzają wiele tych samych rzeczy tak:
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;
});
}
ton z boilerplate dla pojedynczego wywołania this.unitOfWork.teamRepository.getDepartmentsForTeam(id)
więc chciałem zrobić rodzajowe otoki dla boilerplate takich jak:
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;
});
}
którym mógłbym następnie wywołać jak:
public getDepartments(id: number): ng.IPromise<IDepartmentViewModel[]> {
return this.internalCall<IDepartmentViewModel[]>(this.unitOfWork.teamRepository.getDepartmentsForTeam(id));
Ale pojawia się następujący błąd:
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.
Jaki jest właściwy sposób przekazać moją metodę w drugą nazwać to z parametrów dostarczanych?