Ich möchte eine wiederverwendbare Netzwerkdienstkomponente erstellen, die für CRUD-Anfragen von Item
verantwortlich wäre.Typescript generische Constraint erweitert anderen generischen Typ
Let "s sagen meine CatService
eine Liste von cats
anfordern möchten, dann kann es eine restService
Instanz haben, und es kann für die Liste verwenden, erstellen, aktualisieren, löschen ...:
private restService:RestListService<Cat[]> = RestListService();
...
restService.list(urlToGetCats).then(cats => console.log(listdata));
...
restService.update(urlToUpdateACat, updatedCat);
I . diese generischen Komponenten implementiert, aber es nicht sicher genug die Klassendeklaration sieht folgendermaßen aus:
export class RestListService<T extends Array<Identifiable>> {
private dataSubject$: BehaviorSubject<T> = null;
list(url: string): Promise<T> { }
// PROBLEM: I cannot specify the `savingInstance` & the returned Promise type:
update(updateURL: string, savingInstance: Identifiable): Promise<Identifiable> { }
}
im Idealfall würde ich etwas tun, wie ein generisches V
wie die Art der Elemente im Array einzuführen, um den ar zu machen ray (und die ganze Klasse) mehr typsicher:
export class RestListService<T extends Array<V extends Identifiable>> {
//Here the Promise is type safe:
update(updateURL: string, savingInstance: Identifiable): Promise<V> { }
}
Aber es zur Zeit zulässig ist nicht (wie ich sehe).
Kann ich irgendwie den Typ Sicherheit in dieser Situation lösen?
Danke für Ihre Hilfe!