Angular 2 2.0.0-rc.1 Свойство 'map' не существует в типе 'Observable <Response>' не совпадает с сообщением о выпуске

в то время как это выглядит так же, как Angular 2 beta.17: Property 'map' не существует в типе 'Observable <Response> '

это новая версия, и эти решения не работают для этой новой выпущенной версии

Я обновляю до последнего Angular 2 rc1 и не могу заставить вещи компилироваться. У меня были проблемы с не признанием "Обещания". Я закончил установку специальной инструкции es6-prom, чтобы решить эту проблему. Я попытался ввести различные операторы импорта, но не повезло. Я работаю в visual studio 2015

import 'rxjs/Rx';
import {Observable} from 'rxjs/Observable';
import {Observer} from 'rxjs/Observer';
import 'rxjs/add/operator/share';
import 'rxjs/add/operator/map';

return this._http.post(url, null, args).map(extractData).toPromise();

но продолжать получать свойство "map" не существует в типе "Observable"

мой файл пакета

"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",


"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",

"bootstrap": "^3.3.6",
"breeze-client": "~1.5.6",
"handlebars": "^4.0.5"
},
"devDependencies": {
"typescript": "^1.8.10",
"typings": "^0.8.1",
"gulp": "^3.9.1",
"jasmine-core": "~2.4.1",
"karma": "^0.13.22",
"karma-chrome-launcher": "^0.2.3",
"karma-coverage": "^0.5.5",
"remap-istanbul": "^0.6.3",
"karma-jasmine": "^0.3.8",
"karma-jasmine-html-reporter": "^0.2.0",
"http-server": "^0.9.0"
}

Ответ 1

Вы пытались с этим импортом? он работает для меня

 import {Observable} from 'rxjs/Rx';
 import 'rxjs/add/operator/map';

Ответ 2

Вот обходной путь. jjokela и VahidN намекали на это также своими комментариями. Я нашел его, посмотрев сообщение в блоге Deborah Kurata здесь. Она описывает использование Angular2 с шаблоном проекта ASP.NET 4, а не новый шаблон ASP.NET 5 RC, который я использую.

Чтобы исправить это, обратитесь к инструкции, приведенной в https://github.com/Microsoft/TypeScript/issues/8518#issuecomment-229506507

Это исправление предназначено для включения в выпуск Typescript 2.0 для Visual Studio. Пока вы не выполните шаги, описанные ниже.

Для VS 2015 (обновление 3):

Установить обновление VS 2015 3 Замените C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\ TypeScript\typescriptServices.js с файлом в https://raw.githubusercontent.com/Microsoft/TypeScript/Fix8518-U3/lib/typescriptServices.js. Сначала сделайте локальную резервную копию.

Для VS 2015 (обновление 2):

Установить обновление VS 2015 Замените C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\ TypeScript\typescriptServices.js с файлом в https://raw.githubusercontent.com/Microsoft/TypeScript/Fix8518/lib/typescriptServices.js. Сначала сделайте локальную резервную копию.

Для VS 2013:

Установите Typescript 1.8.5 (https://www.microsoft.com/en-us/download/details.aspx?id=48739) Замените C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\ TypeScript\typescriptServices.js с файлом https://raw.githubusercontent.com/Microsoft/TypeScript/Fix8518-Dev12/lib/typescriptServices.js. Сначала сделайте локальную резервную копию.

Ответ 3

У меня была такая же проблема. Кажется, он решил после добавления этой строки в класс AppComponent.

import 'rxjs/Rx'; 

Ответ 4

Ничего кроме

import { Observable } from 'rxjs/Rx';

Ответ 6

Я испытываю такую ​​же проблему после обновления до Angular2 RC. Я получаю VS 2015 ошибки Intellisense для свойства "карта" не существует в типе "Observable".

Я использую grunt-ts для выполнения трансляции, поэтому он не влияет на мою способность переносить, но это раздражает, увидев его в редакторе как ошибки, когда их раньше не было.

Я считаю, что проблема связана с загрузкой Typescript для Visual Studio. https://www.microsoft.com/en-us/download/details.aspx?id=48593

В настоящее время он находится в версии 1.8.6, и я считаю, что он управляет intellisense Visual Studio, а также сборкой в ​​ Typescript компиляции, если именно так вы ее настраиваете. Поэтому нам просто придется ждать появления новой версии Typescript для Visual Studio.

Ответ 7

Ваш импорт хорош. Основная причина проблемы описана на https://github.com/ReactiveX/rxjs/issues/1540

Чтобы исправить это, вам нужно обновиться до последней версии typescript 1.8.

Обратите внимание, что при запуске tsc вы используете глобальный typescript (check tsc -v). Чтобы обновить глобальный typescript, запустите npm i typescript -g.

Если вы хотите использовать typescript, определенный в package.json, вам нужно выполнить его через "scripts", т.е. добавить "build": "tsc" и выполнить его с помощью npm run build.

Ответ 8

У меня такая же проблема. Я запускаю TypeScript 1.8.11. Боюсь, у меня нет решения. Я думаю, что это настоящая проблема с rxjs или angular 2 rc 1.

Я понизил rxjs до бета-2 и исправил эту проблему. К сожалению, angular rc1 зависит от бета-версии 6, поэтому полная установка npm не выполняется.

Ответ 9

Дэн. У меня была серия проблем, пытающихся получить успешный прогон, как только я добавила Observable в свой код после обновления до Angular 2 rc1. Для меня это было добавлено

    "emitDecoratorMetadata": true,

в файл tsconfig.json. Как только я добавил эту строку, она корректно отобразилась как в IIS, так и при запуске npm. Мой полный файл tsconfig.json выглядит следующим образом:

{"compilerOptions": {
"noEmitOnError": true,
"removeComments": false,
"sourceMap": true,
"target": "es5",
"experimentalDecorators": true,
"module": "commonjs",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true  },  "exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"   ]}

(извините за форматирование... он опаздывает). Надеюсь, это поможет.

Ответ 10

в toPromise.d.ts

добавить "import {Observable} из".. /../Observable ";"

import { ToPromiseSignature } from '../../operator/toPromise';
import {Observable} from '../../Observable';
declare module '../../Observable' {
    interface Observable<T> {
        toPromise: ToPromiseSignature<T>;
    }
}

Вы можете сделать то же самое для map.d.ts

Надеюсь, что это поможет.

Ответ 11

import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions} from '@angular/http';    
import 'rxjs/Rx';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';

return this._http.post(url, null, args).map(this.extractData)

Сделать функцию extractData​​p >

Попробуйте это. Он будет работать на вас. Он работает для меня.

Ответ 12

Я получил эту работу для ag-grid angular 2 компонента, который .

Мне нужны были типизации для Promise, с которыми вы сталкиваетесь: tsd install es6-shim

затем в параметрах typescript укажите загруженный файл типизации, например, как один из файлов для компиляции в tsconfig.json, то есть:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false,
    "outDir": "lib"
  },
  "files": [
    "typings/es6-shim/es6-shim.d.ts", // the typings file
    "app/boot.ts" // you application
  ]
}

Ответ 13

Установка типов для es6-shim разрешила для меня такую ​​же проблему:

typings i es6-shim --ambient --save-dev

Это было нарушение изменений в бета-версии 6, и чтобы обойти его, вы могли бы включить ссылку на внутренние файлы типирования внутри angular. К сожалению, они были удалены в 2.0.0-rc.0, поэтому теперь вы должны полагаться на внешние типизации для того же самого.

Ответ 14

если вы только что обновили до Angular2 rc1, убедитесь, что вы используете новые операторы импорта @angular, а не angular2:

`import { Component } from 'angular2/core';`

становится,

`import { Component } from '@angular/core';`

Я знаю, что это кажется простым, но это может вызвать эту проблему.

Ответ 15

Найти бета-версию 2.0.0 TypeScript для Visual Studio 2015. Этот выпуск решил такую ​​же проблему на моей машине. Но помните, это бета-версия.

Ответ 16

Если вы обновляетесь с Angular2 кандидатом на выпуск (например, 2.0.0-rc.1) до версии 2.x.x,, вам нужно: