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" },
    ]);
  }