angular - Erro TS4053: O tipo de retorno do método público da classe exportada possui ou está usando o nome ‘Observable’
Estou tentando criar um aplicativo com Ionic 2 e Angular 2, recebo esse erro enquanto tento executar meu aplicativo. Eu construí outro projeto para verificar e o mesmo problema aconteceu, estou realmente confuso com esse problema.
este é o meu código de serviço
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
import { Storage} from '@ionic/storage';
import {NavController} from "ionic-angular";
/*
Generated class for the MyService provider.
See https://angular.io/docs/ts/latest/guide/dependency-injection.html
for more info on providers and Angular 2 DI.
*/
@Injectable()
export class MyService {
public local :Storage;
public getsession : any;
constructor(private http: Http, private navCtrl : NavController) {
this.local = new Storage();
console.log("my-service page")
}
postLogin(data){
let link = "http://adirzoari.16mb.com/login.php";
return this.http.post(link,data)
.map(res => res.json())
}
checkToken(){
return this.getsession =this.local.get('token');
}
}
Resposta #1
Eu só adiciono isso como uma resposta para que possa ajudar outros usuários do SO que enfrentam o mesmo problema.
Assim como @sudheer-kb mencionou, para resolver esse problema, você precisa explicitamente importar a classe Observable:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
// ...
import { Observable } from "rxjs/Observable"; // <- add this import
E então dê ao seu método um tipo de retorno explícito (também obrigado @ruffin pelo seu comentário):
postLogin(data): Observable<any> {
// ...
}
Resposta #2
Eu tive um problema semelhante, parece estar relacionado a um problema com os tipos de retorno dos métodos. O que funcionou para mim foi simplesmente adicionar ": any" logo após a declaração dos meus métodos, assim, por exemplo:
get(url) : any {
//code
}
Eu não acho que seja um bom hábito, mas às vezes pode ser uma boa solução.
