0
/api/stuffs/
에 Stuff
의 목록을 얻을 수있는 나머지 URL이 있다고 가정 해 보겠습니다. extractStuffs
함수에서 stuffs
배열 Stuff
하지만 어레이의 배열이 아니라고angular2 & typescript & reactiveX : http 결과를 가져 오는 방법
getStuffs(): Observable<Stuff[]> {
return this.http.get(this.url)
.map(this.extractStuffs)
.catch(this.handleError);
}
private extractStuffs(res: Response) {
let stuffs = res.json() as Stuff[];
return stuffs || new Array<Stuff>();
}
모든 사실을 제외하고,이 코드와 잘 작동 : 여기
는Stuff
의 목록을 얻을 수는 HTTP에 코드입니다 함수의 서명이
Observable<Stuff[]>
이고 API의 결과가
Stuff[]
으로 캐스팅 된 경우에도
Object
의 값을 반환합니다. 어떤 이상한 것은 그 타이프 라이터 컴파일러는 오류를 던지고되지 않는 것입니다 (결과 유형은 서명과 다른 경우에도) 우리는 생성 된 JS 파일을 살펴 가지고가는 경우에, 마녀는 완전히 정상입니다 :
StuffService.prototype.extractStuffs = function (res) {
var stuffs = res.json();
return stuffs || new Array();
};
그래서 분명히 결과에 캐스팅을 Stuff[]
은 컴파일러가 고려하지도 않습니다.
수동으로 수행하지 않고 올바르게 캐스팅 할 수있는 방법이 있습니까?
감사합니다.
대한 코드 Customer.interface.ts 여기
의 코드이며 역시 ' stuffJson'은 여전히'물건 '대신'객체 '를 반환합니다. 여기에 생성 된 js =>'jsonStuffs.forEach (function (jsonStuff) {return stuffs.push (jsonStuff);}); '뭔가 내 컴파일러에서 누락 될 수 있습니까 ??? –
dafriskymonkey
물건을 주조하기위한 물건이 인터페이스가되어야합니다 (클래스가 아님). 이 사건이 당신에게 해당 되는가? – Picci
실제로 그 클래스. 인터페이스로 재 시도하십시오. – dafriskymonkey