1. ホーム
  2. typescript

[解決済み】Angular 2 beta.17:プロパティ 'map' がタイプ 'Observable<Response>' に存在しない。

2022-04-15 02:20:39

質問

Angular 2からアップグレードしたところです。 ベータ16 から ベータ17 で、rxjs 5.0.0-beta.6が必要です。 https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28 ) beta16では、Observable/mapの機能に関して全てうまくいっていました。アップグレード後、typescriptがトランスパイルしようとすると、以下のようなエラーが発生しました。

  1. プロパティ 'map' がタイプ 'Observable' に存在しない(observable で map を使用したことがある場所ならどこでも)。
  2. c:/path/node_modules/rxjs/add/operator/map.d.ts(2,16): エラー TS2435: Ambient モジュールを他のモジュールまたはネームスペースにネストすることはできません。
  3. c:/path/node_modules/rxjs/add/operator/map.d.ts(2,16): エラー TS2436: アンビエントモジュール宣言で相対モジュール名を指定できません。

この質問と回答を見たことがありますが、問題は解決しません。 Angular2 beta.12 と RxJs 5 beta.3 での Observable エラーについて

私の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
]);

どなたか、何がどうおかしいのか、お分かりになる方はいらっしゃいますか?

解決方法は?

gulp-typescriptプラグインを最新版(2.13.0)にアップグレードしたら、滞りなくコンパイルできるようになりました。

UPDATE 1: 以前に使用していた gulp-typescript のバージョンは 2.12.0 でした。

UPDATE 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からインストールされるtypingの詳細については、こちらをご覧ください。 https://angular.io/docs/ts/latest/guide/typescript-configuration.html#!#typings