Angular2 ve Typescript'i öğreniyorum. Ben angular.io üzerinde Heroes öğretici üzerinden çalışıyorum, ancak ASP.Net'ten dönüştürdüğüm bir projeye uygularım. Öğretmenin ilgili bölümünün ne ile eşleştiğini görebildiğim kadarıyla benim anlayış eksikliğimden kaynaklandığını düşündüğüm bir soruna girdim.Gözlemlenebilir <{}> Gözlemlenecek öğe yok atanabilir <SomeType[]>
import { Injectable } from '@angular/core';
import {RiskListSummary} from '../Models/RiskListSummary';
import { Observable } from 'rxjs/Rx';
import { Http, Response } from '@angular/http';
@Injectable()
export class RiskAssessmentListService {
constructor(private http : Http) {}
private serviceUrl = "http://myserviceurl/";
getRisks(): Observable<RiskListSummary[]> {
return this.http.get(this.serviceUrl)
.map(this.extractData())
.catch(this.handleError());
}
private extractData(res: Response) {
if (res.status < 200 || res.status >= 300) {
throw new Error('Bad response status: ' + res.status);
}
let body = res.json();
return body.data || { };
}
private handleError (error: any) {
let errMsg = error.message || 'Server error';
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
}
}
ben "this.http.get (this.serviceUrl) return" satırında aşağıdaki hatayı alıyorum
:
Error:(20, 16) TS2322: Type 'Observable<{}>' is not assignable to type 'Observable'. Type '{}' is not assignable to type 'RiskListSummary[]'. Property 'length' is missing in type '{}'.
olsun, hani WebStorm kullanıyorum bir fark yaparsa (En son sürüm), ama bence bu hata düz metin derleyicisinden geliyor. Belki de rxjs için bir yazım dosyasına ihtiyacım vardı, ama öğretici bir tane kullanmıyor ve bir "yazarak arama" ile bulduğumların hiçbiri bir fark yaratmadı
Aşağıdakiler paketten bağımlılığım. json:
"dependencies": {
"@angular/common": "2.0.0-rc.1",
"@angular/compiler": "2.0.0-rc.1",
"@angular/core": "2.0.0-rc.1",
"@angular/http": "2.0.0-rc.1",
"@angular/platform-browser": "2.0.0-rc.1",
"@angular/platform-browser-dynamic": "2.0.0-rc.1",
"@angular/router": "2.0.0-rc.1",
"@angular/router-deprecated": "2.0.0-rc.1",
"@angular/upgrade": "2.0.0-rc.1",
"systemjs": "0.19.27",
"es6-shim": "^0.35.0",
"reflect-metadata": "^0.1.3",
"rxjs": "5.0.0-beta.6",
"zone.js": "^0.6.12"
Teşekkürler, bu hile yaptı.Örneğin orijinal örneğindeki (.NET) uzantı yöntemleri gibi bir şey olduğunu varsaymıştım. //angular.io/docs/ts/latest/guide/server-communication.html#). Bence aynı hataya hala –