typescript - Hur kan jag returnera ett specifikt objekt från en generisk funktion?
Tänk på denna generiska funktion:
public getData<T>(url: string): Observable<T> {
return this.httpClient.get<T>(url);
}
Hur kan jag returnera en hårdkodad mockobjektsarray för att testa funktionen (till exempel eftersom det fjärrstyrda API:et ännu inte har implementerats)?
Jag skulle vilja returnera detta:
return of([{id: 1, value: 'test1'}, {id: 2, value: 'test2'}]);
men jag får detta fel:
TS2322: Typen 'Observable<{ id: number; value: string; }[]>' kan inte tilldelas typen 'Observable'. Typen '{ id: number; value: string; }[]' kan inte tilldelas typen 'T'. 'T' kan instansieras med en godtycklig typ som kan vara orelaterad till '{ id: number; value: string; }[]'.
Finns det ett sätt att uppnå detta?
Svar #1
return of([{id: 1, value: 'test1'}, {id: 2, value: 'test2'}] as unknown T);
Fungerar. Även as any as T borde fungera såvitt jag vet.
Svar #2
try this by defining type in TS :
type ET = {
id: number;
value: string;
};
getData(): Observable<ET[]> {
return of([
{ id: 1, value: "test1" },
{ id: 2, value: "test2" },
]);
}
