[typescript] Angular 2 베타 17 : ‘Observable <Response>’유형에 ‘map’속성이 없습니다.

방금 Angular 2 beta16 에서 beta17로 업그레이드 했는데 rxjs 5.0.0-beta.6이 필요합니다. (변경점 여기 : https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28 ) 피 감시 /지도 기능에 대해 잘 작동 된 모든 beta16에서. 업그레이드 후 다음 오류가 발생하여 타이프 스크립트를 변환하려고 할 때 발생합니다.

  1. ‘Observable’유형에 ‘map’속성이 존재하지 않습니다 (관찰 가능한 맵을 사용한 위치)
  2. c : /path/node_modules/rxjs/add/operator/map.d.ts (2,16) : 오류 TS2435 : 주변 모듈을 다른 모듈이나 네임 스페이스에 중첩 할 수 없습니다.
  3. c : /path/node_modules/rxjs/add/operator/map.d.ts (2,16) : 오류 TS2436 : 주변 모듈 선언에서 상대 모듈 이름을 지정할 수 없습니다.

이 질문 / 답변을 보았지만 문제를 해결하지 못했습니다 : Angular2 베타 12 및 RxJs 5 베타 3의 관찰 가능한 오류

내 appBoot.ts는 다음과 같습니다 (이미 rxjs / map을 참조하고 있습니다).

///<reference path="./../node_modules/angular2/typings/browser.d.ts"/>
import {bootstrap} from "angular2/platform/browser";
import {ROUTER_PROVIDERS} from 'angular2/router';
import {HTTP_PROVIDERS} from 'angular2/http';
[stuff]
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
import {enableProdMode} from 'angular2/core';
import { Title } from 'angular2/platform/browser';


//enableProdMode();
bootstrap(AppDesktopComponent, [
    ROUTER_PROVIDERS,
    HTTP_PROVIDERS,
    Title
]);

아무도 건초 더미가 어떻게 될지 알고 있습니까?



답변

map연산자 를 가져와야합니다 .

import 'rxjs/add/operator/map'


답변

gulp-typescript 플러그인을 최신 버전 (2.13.0)으로 업그레이드했으며 이제 장애없이 컴파일됩니다.

업데이트 1 : 나는 이전에 gulp-typescript 버전 2.12.0을 사용하고 있었다

업데이트 2 : Angular 2.0.0-rc.1로 업그레이드하는 경우 appBoot.ts 파일에서 다음을 수행해야합니다.

///<reference path="./../typings/browser/ambient/es6-shim/index.d.ts"/>
import { bootstrap } from "@angular/platform-browser-dynamic";
import { ROUTER_PROVIDERS } from '@angular/router-deprecated';
import { HTTP_PROVIDERS } from '@angular/http';
import { AppComponent } from "./path/AppComponent";
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
// import 'rxjs/Rx'; this will load all features
import { enableProdMode } from '@angular/core';
import { Title } from '@angular/platform-browser';



//enableProdMode();
bootstrap(AppComponent, [
    ROUTER_PROVIDERS,
    HTTP_PROVIDERS,
    Title
]);

중요한 것은 es6-shim / index.d.ts에 대한 참조입니다.

여기에 표시된대로 es6-shim 타이핑을 설치했다고 가정합니다.
여기에 이미지 설명을 입력하십시오

Angular에서 입력하는 타이핑에 대한 자세한 내용은 다음을 참조 하십시오.


답변

Rxjs 5.5“속성 ‘map’이 Observable 유형에 없습니다.

문제는 모든 연산자 주위에 파이프를 추가해야한다는 사실과 관련이 있습니다.

이것을 바꾸십시오,

this.myObservable().map(data => {})

이에

this.myObservable().pipe(map(data => {}))

이와 같은 맵 가져 오기

import { map } from 'rxjs/operators';

문제를 해결합니다.


답변

제 경우에는지도와 약속 만 포함하면 충분하지 않습니다.

import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';

공식 문서 권장 사항에 따라 여러 rxjs 구성 요소를 가져 와서이 문제를 해결했습니다 .

1) 하나의 app / rxjs-operators.ts 파일에서 명령문을 가져옵니다.

// import 'rxjs/Rx'; // adds ALL RxJS statics & operators to Observable

// See node_module/rxjs/Rxjs.js
// Import just the rxjs statics and operators we need for THIS app.

// Statics
import 'rxjs/add/observable/throw';

// Operators
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/distinctUntilChanged';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/switchMap';
import 'rxjs/add/operator/toPromise';

2) 서비스에서 rxjs-operator 자체를 가져옵니다.

// Add the RxJS Observable operators we need in this app.
import './rxjs-operators';


답변

VS2015 에서이 오류가 발생하면 github 문제 및 해결 방법이 여기에 언급되어 있습니다.

https://github.com/Microsoft/TypeScript/issues/8518#issuecomment-229506507

이것은 property map does not exist on observable문제를 해결하는 데 도움이 되었습니다. 또한 1.8.2 이상의 유형 스크립트 버전이 있는지 확인하십시오.


답변

앵글 러 6을 사용하는 사람을위한 최종 답변 :

* .service.ts 파일 에 아래 명령을 추가하십시오. “

import { map } from "rxjs/operators";

**********************************************Example**Below**************************************
getPosts(){
this.http.get('http://jsonplaceholder.typicode.com/posts')
.pipe(map(res => res.json()));
}
}

Windows 10을 사용하고 있습니다.

타입 스크립트 V 2.3.4.0의 angular6


답변

import 'rxjs/add/operator/map';

&

npm install rxjs@6 rxjs-compat@6 --save

나를 위해 일했다