typescript - Angular-feil TS2554: Forventet 0 argumenter, men fikk x på pipede operatorer


Jeg har en Error TS2554: Forventet 0 argumenter, men fikk 4 i pipen til observablen getHappyDays()

getHappyDays() Observable returnerer en Observable<HttpResponse<IHappyDays>> | Observable<HttpErrorResponse>, jeg har inkludert en stackblitze for å bedre vise problemet

 resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):
    Observable<IHappyDays> | Observable<never> {

    return this.happyService.getHappyDays()
      .pipe(//=>error thrown here
        first(),
        mergeMap((res) => {
          return of(res.body)
        })
      )
  }

https://stackblitz.com/edit/angular-3iujhb/i happy-resolver.service

Svar #1

Problemet er union-returtypen i getHappyDays(). Det vil fungere når du endrer den til Observable<HttpResponse<IHappyDays> | HttpErrorResponse> (se: https://github.com/ReactiveX/rxjs/issues/3388).

Merk angående grensesnittdesign: Jeg ville ikke returnere HttpErrorResponse som en verdi siden dette åpenbart er en feil. Angular HttpClient-dokumentasjonen gir noen retningslinjer for hvordan man håndterer feil: https://angular.io/guide/http

Relaterte artikler