typescript - Angular 5s HttpClient: Hvilke argumenter aksepterer toPromise()?


Hvis jeg prøver å returnere et løfte av en spesifikk type som dette:

public myMethod(): Promise<MyType> {
  return this.httpClient.get('/my/url').toPromise();
}

...Jeg får en feil om at returtypen Promise<Object> ikke samsvarer med forventet type Promise<MyType>. Det er enkelt å fikse ved å caste resultatet eller ved å gjøre dette:

public myMethod(): Promise<MyType> {
  return this.httpClient.get<MyType>('/my/url').toPromise();
}

Det finnes imidlertid et annet alternativ, nemlig å gi et valgfritt argument til toPromise()-funksjonen. IDE-en min sier at typen til argumentet enten er "PromiseCtor: PromiseConstructorLike" eller "PromiseCtor: typeof Promise".

public myMethod(): Promise<MyType> {
  return this.httpClient.get('/my/url').toPromise(???);
}

Jeg kan imidlertid ikke finne ut hvilken syntaks som vil tilfredsstille ??? ovenfor.

Noen ideer om hva som kan fylles inn som et gyldig argument her?

Svar #1

Du må spesifisere typen i get-metoden get<MyType>:

public myMethod(): Promise<MyType> {
   return this.httpClient.get<MyType>('/my/url').toPromise();
}

Svar #2

public async myMethod(): MyType {
  return await <MyType>this.httpClient.get('/my/url').toPromise();
}

Relaterte artikler