typescript - example - Angular 2 2.0.0-rc.1 La propiedad ''map'' no existe en el tipo ''Observable<Response>'' no es lo mismo que el informe de problema
rxjs pipe (16)
mientras que esto parece el mismo problema que Angular 2 beta.17: la propiedad ''map'' no existe en el tipo ''Observable <Response>''
esta es una nueva versión y esas soluciones no funcionan para esta nueva versión lanzada
He actualizado al último Angular 2 rc1 y no puedo hacer que las cosas se compilen. Tuve problemas al no reconocer ''Promesa''. Terminé instalando es6-promise escribiendo directamente para resolver ese problema. He intentado poner varias declaraciones de importación pero no tuve suerte. Estoy corriendo en 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();
pero continúe obteniendo que la propiedad ''mapa'' no existe en el tipo ''Observable''
mi archivo de paquete es
"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"
}
Aquí está la solución. jjokela y VahidN lo insinuaron también con sus comentarios. Lo encontré mirando la publicación de blog de Deborah Kurata here . Ella describe el uso de Angular2 con la plantilla de proyecto ASP.NET 4, no la nueva plantilla ASP.NET 5 RC que estoy usando.
Para solucionarlo, consulte estas instrucciones que se encuentran en https://github.com/Microsoft/TypeScript/issues/8518#issuecomment-229506507
Esta corrección está destinada a incluirse con la versión de Tipos de escritura 2.0 para Visual Studio. Hasta que pueda realizar los pasos manuales a continuación.
Para VS 2015 (Actualización 3):
Instale VS 2015 Update 3 Reemplace C: / Archivos de programa (x86) / Microsoft Visual Studio 14.0 / Common7 / IDE / CommonExtensions / Microsoft / TypeScript / typescriptServices.js con el archivo en https://raw.githubusercontent.com/Microsoft/TypeScript/Fix8518-U3/lib/typescriptServices.js . Sin embargo, primero tome una copia de seguridad local.
Para VS 2015 (Actualización 2):
Instale VS 2015 Actualización 2 Reemplace C: / Archivos de programa (x86) / Microsoft Visual Studio 14.0 / Common7 / IDE / CommonExtensions / Microsoft / TypeScript / typescriptServices.js con el archivo en https://raw.githubusercontent.com/Microsoft/TypeScript/Fix8518/lib/typescriptServices.js . Sin embargo, primero tome una copia de seguridad local.
Para VS 2013:
Instale TypeScript 1.8.5 ( https://www.microsoft.com/en-us/download/details.aspx?id=48739 ) Reemplace C: / Archivos de programa (x86) / Microsoft Visual Studio 12.0 / Common7 / IDE / CommonExtensions / Microsoft / TypeScript / typescriptServices.js con el archivo en https://raw.githubusercontent.com/Microsoft/TypeScript/Fix8518-Dev12/lib/typescriptServices.js . Sin embargo, primero tome una copia de seguridad local.
Busque la versión beta 2.0.0 de TypeScript para Visual Studio 2015. Esta versión resolvió el mismo problema en mi máquina. Pero recuerda, es una beta.
Dan: tuve una serie de problemas al tratar de obtener una ejecución exitosa tan pronto como agregué Observable en mi código una vez que actualicé a Angular 2 rc1 también. Lo que me solucionó fue agregar
"emitDecoratorMetadata": true,
a mi archivo tsconfig.json. Una vez que agregué esa línea, se procesó correctamente tanto en IIS como usando npm start. Mi archivo completo tsconfig.json es el siguiente:
{"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" ]}
(perdón por el formato ... se está haciendo tarde). Espero que esto ayude.
El problema probablemente esté relacionado con https://github.com/Microsoft/TypeScript/issues/7415 que aún no ha visto una versión VS completa. Es posible construir las fuentes localmente y usar el modo VS Dev .
Estoy experimentando el mismo problema después de actualizar a Angular2 RC. Obtengo errores VS 2015 Intellisense para la propiedad ''map'' no existe en el tipo ''Observable''.
Utilizo grunt-ts para hacer mi traspiración, por lo que no afecta mi capacidad de transpilar, pero es molesto verlo en el editor como errores cuando no estaban allí antes.
Creo que el problema es con la descarga de mecanografiado para Visual Studio. https://www.microsoft.com/en-us/download/details.aspx?id=48593
Actualmente se encuentra en la versión 1.8.6 y creo que impulsa el intellisense de Visual Studio y también la compilación en compilación de mecanografía si es así como lo está configurando. Por lo tanto, es posible que tengamos que esperar a que caiga una nueva versión de Typecript para Visual Studio.
Instalar los tipings para
es6-shim
resolvió el mismo problema para mí:
typings i es6-shim --ambient --save-dev
Fue un cambio radical en la versión beta 6 y, para evitarlo, podría incluir una referencia a los archivos de tipificación internos dentro de angular. Desafortunadamente, estos se han eliminado en 2.0.0-rc.0, por lo que debe confiar en los tipings externos para lo mismo ahora.
Nada excepto
import { Observable } from ''rxjs/Rx'';
Tengo el mismo problema. Estoy ejecutando TypeScript 1.8.11. No tengo solución, me temo. Creo que es un problema genuino con rxjs o angular 2 rc 1.
Bajé el rxjs a beta 2 y solucioné ese problema. Desafortunadamente, angular rc1 depende de beta 6, por lo que falla la instalación completa de npm.
Tengo esto funcionando para el componente ag-grid angular 2 que está here .
necesitaba los tipings para Promise que obtienes con:
tsd install es6-shim
luego, en las opciones de mecanografiado, especifique el archivo de tipificación descargado como uno de los archivos para compilar en tsconfig.json, es decir:
{
"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
]
}
Tus importaciones son buenas. La causa raíz del problema se describe en https://github.com/ReactiveX/rxjs/issues/1540
Para solucionarlo, debe actualizar al último mecanografiado 1.8.
Tenga en cuenta que cuando ejecuta
tsc
está utilizando el mecanografiado global (marque
tsc -v
) Para actualizar el mecanografiado global, ejecute
npm i typescript -g
.
Si desea utilizar el mecanografiado definido en
package.json
, debe ejecutarlo mediante
"scripts"
, es decir, agregar
"build": "tsc"
y ejecutarlo con
npm run build
.
Yo estaba teniendo el mismo problema. Parece haberse resuelto después de agregar esta línea a la clase AppComponent.
import ''rxjs/Rx'';
en toPromise.d.ts
agregue "import {Observable} de ''../../Observable'';"
import { ToPromiseSignature } from ''../../operator/toPromise'';
import {Observable} from ''../../Observable'';
declare module ''../../Observable'' {
interface Observable<T> {
toPromise: ToPromiseSignature<T>;
}
}
Puedes hacer lo mismo para map.d.ts
Espero que esto ayude.
intentaste con esta importación? esto funciona para mi
import {Observable} from ''rxjs/Rx'';
import ''rxjs/add/operator/map'';
si acaba de actualizar a Angular2 rc1, asegúrese de utilizar las nuevas declaraciones de importación @angular, en lugar de la angular2:
`import { Component } from ''angular2/core'';`
se convierte,
`import { Component } from ''@angular/core'';`
Sé que parece simple, pero puede causar este problema.
Si está actualizando desde un candidato de versión Angular2 (es decir, 2.0.0-rc.1) a una versión 2.xx, querrá:
-
Actualice su package.json para estar actualizado con el archivo en https://github.com/angular/quickstart/blob/master/package.json
-
Actualice su archivo systemjs.config.js para que esté actualizado con el archivo en https://github.com/angular/quickstart/blob/master/systemjs.config.js
-
Cambie la declaración de importación a:
import {Observable} from ''rxjs''
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)
Hacer la función extractData
Pruebe este. Funcionará para usted. Me esta funcionando.