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();
}
