Angular2 and TypeScript: error TS2322: Type 'Response' is not assignable to type 'UserStatus'
In my opinion there is no point to put type on something that comes from http response... Types exists only in compilation time, not in runtime...
Instead of:
this.http.get('/restservice/userstatus', {headers: headers})
.subscribe(
(data: Response) => {
data = JSON.parse(data['_body']);
this.userStatus = data;
},
err => console.log(err), // error
() => console.log('getUserStatus Complete') // complete
);
Use this:
this.http.get('/restservice/userstatus', {headers: headers})
.map((data: any) => data.json())
.subscribe(
(data: any) => {
this.userStatus = data;
},
err => console.log(err), // error
() => console.log('getUserStatus Complete') // complete
);
Here you declare data
as type Response
(data: Response) => { // <==
data = JSON.parse(data['_body']);
and here you assign from a variable of type Response
to a variable of type UserStatus
this.userStatus = data;
thus the error.
To avoid that just do
this.userStatus = JSON.parse(data['_body']);