http - feil TS2346: Leverte parametere samsvarer ikke med noen signatur for kallmål


Jeg er ny på Typescript og Angular2, og jeg prøver å lage et løfte på en HTTP GET-forespørsel, men koden nedenfor (nøyaktig return this.http.get(url)-linjen gir meg en feil:

error TS2346: Supplied parameters do not match any signature of call target.

I tjenesten min har jeg metoden isLoggedIn

isLoggedIn(): Promise<Object> {
    return this.http.get('/some/path')
        .map((res: Response) => res.json())
        .toPromise();
}

Da vil jeg bruke det i komponenten min, slik:

onInit() {
    this.login.isLoggedIn()
    .then((data: any) => {
        if (data.hasOwnProperty('status') && data.status === 401) {
            this.router.navigate(['/Login']);
        } else {
            this.router.navigate(['/Home'])
        }
    });
}

Jeg lette etter hvordan jeg kunne bruke HTTP-forespørsel og løfte på riktig måte, men jeg kunne ikke finne noen god beskrivelse.

Svar #1

Et raskt blikk på Angular-kildekode:

static toPromise(obj: Observable<any>): Promise<any> { return (<any>obj).toPromise(); }

Avslører at toPromise-metoden bør motta en Observable<any> (din kall var: toPromise())

Jeg antar at dette er grunnen til feilen

Relaterte artikler