2017-01-24 2 views
1

저는 각도와 npm에 익숙하지 않지만, 학습 할 때, 내가 노력하고있는 소스에서 작동하는 코드로 오류가 발생했습니다. 재현 (here).ts 속성 'map'이 (가) 'Observable <Response>'유형에 존재하지 않습니다.

나는 이것이 내 개발 환경과 관련이 있다고 가정하지만 그 이유를 정확히 이해할 수는 없습니다.

내 코드는 다음 .map

return this.http.get('api/cards.json') 
.map((response:Response) => <Card[]>response.json().data) 
.do(data=>console.log(data)) 
.catch(this.handleError); 

, 비주얼 스튜디오 코드는 날이 오류를 줄 :이 오류를 무시하고 브라우저에 가면

ts Property 'map' does not exist on type 'Observable'

, 나는를했습니다 같은 메시지.

angular-cli으로 프로젝트를 만들었으며 각도 버전은 실제로 2.4.4입니다. 서버는 ng serve 도구로 실행 중입니다. 또한 버그가 벤 해결했다 보인다> 내가 비주얼 스튜디오 2015을 사용하지 않는, 또한, 내 비주얼 스튜디오 코드 (와 최신 해요 -

property map does not exist on observable response in angular : 내가 만든 한

은 검색을 SOMES 이후 잠시).

Angular 2 2.0.0-rc.1 Property 'map' does not exist on type 'Observable<Response>' not the same as issue report - (뭔가가 아니다 tsc에 대해 내가 무엇을 잘못 가고있는 npm i typescript -g (다시 시작 모두 VS codeng serve

어떤 생각을 완료 한 후에 아무것도 모르는 내 커맨드 가정> 현재까지,하지만 난 등)를 업데이트하는 방법을 모르겠어요.

+0

당신이로 (당신이 여기에 작성하는 무엇이든) 모듈/컴포넌트/서비스에'RxJs' 라이브러리를 참조해야'Observable' (http.get'에서 반환 된 유형은 해당 라이브러리의 일부입니다 .각도 사이트에 대한 튜토리얼은'Observable '을 어떻게 사용하는지에 대한 좋은 설명과 RxJs lib에서'map'과 같이 사용하려는보다 일반적인 메소드에 대한 참조 매핑을 만드는 방법에 대해 설명합니다. – Igor

+0

@Igor : 당신이 옳다고 생각합니다. rxjs/Observable '에서 import {Observable}을 추가하기 만하면 "RxJs"를 설치하는 특별한 일을해야합니까? 내 서비스로 문제가 해결되지 않습니다 – J4N

+0

내 대답보기,지도는 다음과 같습니다. '연산자'를 고려하고 불러 오기 위해서는 가져 오기 종속성을 선언해야합니다. 이것은 (다른 것들과 함께) 상당히 일반적인 연산자이기 때문에 일반적인 가져 오기 파일을 만든 다음 가져 오는 것이 더 쉽습니다. 이것은 Angular의 도움말/문서에서 가져온 것입니다. – Igor

답변

3

을 당신은 당신이합니다 (Observable 여기) 작성하는 무엇이든 모듈/컴포넌트/서비스 (RxJs 라이브러리를 참조해야 유형이 http.get에서 반환 됨) 그 도서관의 일부. RxJs은에 포함되어 당신이 파일을 참조해야합니다 다음을 사용 map, catch, do 등처럼 사용하지만 위해 수 많은 사업자/모듈을 가지고 있습니다.

각 사이트에 튜토리얼 좋은 설명이 Observable<T>을 어떻게 섭취하는지 그리고 RxJs lib의지도처럼 사용하려는 일반적인 방법에 대한 참조 매핑을 만드는 방법에 대해 알아보십시오. RxJs 라이브러리에서보다 일반적으로 사용되는 연산자 및 유형에 대한 참조가있는 단일 파일을 작성하면 해당 유형을 사용하려는 참조 파일을 참조하기 만하면 모든 유형의 연산자/유형을 모두 다시 추가해야하는 번거 로움을 피할 수 있습니다. 프로젝트 전체에서 파일을 활용할 수 있습니다.

다음은보다 일반적으로 사용되는 몇 가지 예제 파일 (이 예제에서는 rxjs-operators.ts)입니다. 당신이 .map (또는 다른 방법)을 사용하여이 줄을 추가 할 파일의 선두에

// Observable class extensions 
import 'rxjs/add/observable/of'; 
import 'rxjs/add/observable/throw'; 

// Observable operators 
import 'rxjs/add/operator/catch'; 
import 'rxjs/add/operator/debounceTime'; 
import 'rxjs/add/operator/distinctUntilChanged'; 
import 'rxjs/add/operator/do'; 
import 'rxjs/add/operator/filter'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/switchMap'; 

.

import './rxjs-operators'; 
+1

고맙다. 내가 따라 갔던 교훈도 그걸 탐구했다. 데모를 보여 준 후, 나는 너무 추리해서 나는 추측을 테스트하지 못했습니다. – J4N

관련 문제