angular - eroare TS2416 Tipul 'Observable' nu poate fi atribuit tipului 'Observable'


Am o aplicație Angular 8. Așa arată un serviciu:-

export class UserService{
  constructor(private http: HttpClient) { }

  public AddUser(user: User): Observable<APIResponse> {
    return this.http.post<APIResponse>(
      API.User + "register", 
      user //data
    ).pipe();
  }
}

Dar acest lucru aruncă eroarea de mai jos.

eroare TS2416 Tipul 'Observable<APIResponse>' nu poate fi atribuit tipului 'Observable<User>'.

Dar dacă fac tipul de retur al serviciului același cu tipul parametrului de intrare, adică Observable<User>, atunci nu apare nicio eroare.

În aplicație, fiecare serviciu ar avea un tip diferit de date (input), dar fiecare serviciu va avea ca tip de returnare APIResponse.

Ce cauzează această eroare? Cum pot scăpa de ea?

Mulțumesc!

Răspuns #1

Din codul pe care l-ai postat, cel mai probabil la un moment dat în aplicația ta folosești această metodă addUser(...), și acolo se așteaptă să returneze Observable. Se pare că ApiResponse și User au structuri diferite.

Spui că toate serviciile returnează același tip ApiResponse - sunt datele absolut aceleași acolo? Sau există totuși o diferență în funcție de tipul de intrare al serviciului? Dacă este cazul acesta (și cred că este, deoarece trebuie să preiei și date), ar trebui să verifici genericele din TypeScript, ar putea fi de mare ajutor pentru tine: https://www.typescriptlang.org/docs/handbook/generics.html