typescript - Tip 'Observable<{}>' nije dodjeljiv tipu 'Observable | boolean'
Pokušavam pratiti ovaj vodič, ali dobivam pogreške.
- pathMatch: 'full'. Pokušao sam promijeniti "@angular/router" u "3.0.0-beta.2", ali problem je i dalje isti.
Moje ovisnosti:
"dependencies": {
"@angular/common": "2.0.0-rc.3",
"@angular/compiler": "2.0.0-rc.3",
"@angular/core": "2.0.0-rc.3",
"@angular/http": "2.0.0-rc.3",
"@angular/platform-browser": "2.0.0-rc.3",
"@angular/platform-browser-dynamic": "2.0.0-rc.3",
"@angular/platform-server": "2.0.0-rc.3",
"@angular/router": "3.0.0-beta.2",
"@angular/router-deprecated": "2.0.0-rc.2",
"nativescript-angular": "0.2.0",
"tns-core-modules": "^2.1.0"
},
Tip 'Observable<{}>'' nije dodjeljiv tipu 'Observable', što upućuje na liniju 'return o';
canDeactivate(): Observable<boolean> | boolean { if (!this.crisis || this.crisis.name === this.editName) { return true; } let p = this.dialogService.confirm('Discard changes?'); let o = Observable.fromPromise(p); return o; }
Može li mi netko pomoći da ispravim ove pogreške? Hvala.
Odgovor #1
Možete pokušati kastati:
canDeactivate(): Observable<boolean> | boolean {
if (!this.crisis || this.crisis.name === this.editName) {
return true;
}
let p = this.dialogService.confirm('Discard changes?');
let o = <Observable<boolean>>Observable.fromPromise(p);
return o;
}
Odgovor #2
Kompajler se žali jer je povratna vrijednost o tipa Observable<{}>. To je najvjerojatnije zato što konstruirate Observable iz p, koji se rješava u tip Promise<{}>. Dvaput provjerite dialogService.confirm() i uvjerite se da je njegova povratna vrijednost tipa Promise<boolean>.
Ako to ne uspije, možete pokušati eksplicitno kastati kao što @rinukkusu sugerira.
