Je le code suivantType 'Observable <any>' est incessible taper 'Observable <T>'
import {HttpClient} from '@ngular/common/http';
private httpClient: HttpClient;
do_request(method: string,
url: string,
headers?: HttpHeaders,
content?: string,
contentType?: string): Observable<MyResponse>{
let options = {
observe: 'response' as 'response',
responseType: 'text' as 'text',
headers: headers,
body: content:
}
return this.httpClient.request(method, url, options)
.map(res=> new MyResponse(res.status, res.body))
.catch(err=>Observable.throw(new MyResponse(err.status)));
}
Ce code me donne l'erreur suivante
error TS2322: Type 'Observable' is not assignable to type 'Observable'. Property 'source' is protected but type 'Observable' is not a class derived from 'Observable'
J'utilise Rxjs 5.4 .3, Angular 4.4.3 et TypeScript 2.5.3.
que j'ai trouvé plusieurs sources d'erreur possibles et ont essayé les solutions proposées sans succès:
- Typescript version (je rétrogradé à 2,3 avec des résultats similaires)
- importation d'un package qui a aussi une dépendance à l'égard rxjs using npm link (je l'ai installé localement, avec le même résultat).
J'apprécierai toute suggestion sur la façon de résoudre ce problème.
Est-ce que cela se produit si vous supprimez le bloc' catch'? – Meir
@Meir L'erreur change: Le type 'Observable' n'est pas assignable au type 'Observable '. Deux types différents avec ce nom existent, mais ils ne sont pas liés. J'ai supprimé la dépendance dupliquée dans mon code (comme je l'ai expliqué dans les questions). Mais peut-être cela est lié au fait que j'utilise un nouveau module angulaire/commun/http –
pablochacin