Typescript 角度2.0.0-rc.1属性';地图';不存在于类型';可观察<;回应>';与问题报告不同
虽然这看起来和 这是一个新版本,这些解决方案不适用于此新发布的版本 我已经更新到最新的Angular 2 rc1,无法进行编译。我遇到了无法识别“Promise”的问题,我最终直接安装了es6 Promise来解决这个问题。我试过输入各种进口声明,但没有成功。我正在visual studio 2015中运行Typescript 角度2.0.0-rc.1属性';地图';不存在于类型';可观察<;回应>';与问题报告不同,typescript,angular,rxjs,Typescript,Angular,Rxjs,虽然这看起来和 这是一个新版本,这些解决方案不适用于此新发布的版本 我已经更新到最新的Angular 2 rc1,无法进行编译。我遇到了无法识别“Promise”的问题,我最终直接安装了es6 Promise来解决这个问题。我试过输入各种进口声明,但没有成功。我正在visual studio 2015中运行 import 'rxjs/Rx'; import {Observable} from 'rxjs/Observable'; import {Observer} from 'rxjs/Obse
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"
}
你们的进口货很好。有关问题的根本原因,请参见 要修复它,您需要升级到最新的typescript 1.8 请注意,当您运行
tsc
时,您正在使用全局类型脚本(检查tsc-v
)升级全局类型脚本,请运行npm i typescript-g
如果您想使用在
package.json
中定义的typescript,您需要通过“scripts”
执行它,即添加“build”:“tsc”
,并使用npm run build
执行它。升级到Angular2 RC后,我遇到了同样的问题。我得到VS 2015 Intellisense错误,因为类型“Observable”上不存在属性“map”
我使用grunt ts进行传输,这样不会影响我的传输能力,但在编辑器中将其视为错误时,它们以前不在那里,这让我很恼火
我认为问题在于VisualStudio下载的Typescript。
它目前的版本是1.8.6,我相信它推动了VisualStudio的intellisense以及内置的typescript编译,如果这是您配置它的方式的话。因此,我们可能不得不等待Visual Studio删除新版本的Typescript。我也遇到了同样的问题。我正在运行TypeScript 1.8.11。恐怕我没有办法。我认为rxjs或angular 2 rc 1都存在真正的问题 我将rxjs降级为beta 2,它解决了这个问题。不幸的是,angular rc1依赖于beta 6,因此完整的npm安装失败。我为angular 2的组件做了这项工作 我需要为你得到的承诺打字:
tsd安装es6垫片
然后在typescript选项中,指定下载的typings文件,如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
]
}
Dan-我在升级到Angular 2 rc1后,在代码中添加了Observable之后,我在尝试成功运行时遇到了一系列问题。为我修正的是添加
"emitDecoratorMetadata": true,
到我的tsconfig.json文件。添加该行后,它在IIS和使用npm start中都正确呈现。我完整的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" ]}
(很抱歉格式化…时间不早了)。希望这能有所帮助。问题很可能与尚未发布完整VS版本的版本有关。可以在本地构建源并使用。为
es6垫片安装打字机
为我解决了相同的问题:
typings i es6-shim --ambient --save-dev
这是一个问题,为了解决这个问题,你可以在angular中包含对内部打字文件的引用。不幸的是,这些已在2.0.0-rc.0中删除,因此您现在必须依靠外部打字来完成相同的工作。您尝试过此导入吗?它对我有用
import {Observable} from 'rxjs/Rx';
import 'rxjs/add/operator/map';
我也有同样的问题。在将这一行添加到AppComponent类后,问题似乎已经解决
import 'rxjs/Rx';
这里是解决方法。jjokela和VahidN也用他们的评论暗示了这一点。 我是通过查看Deborah Kurata的博客文章发现的。她概述了在ASP.NET 4项目模板中使用Angular2,而不是我正在使用的新ASP.NET 5 RC模板 要解决此问题,请参阅位于 此修复程序的目标是包含在Visual Studio的Typescript 2.0版本中。直到您可以执行以下手动步骤 对于VS 2015(更新3): 安装VS 2015更新3 将C:\Program Files(x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript\typescriptServices.js替换为中的文件。不过首先要做一个本地备份 对于VS 2015(更新2): 安装VS 2015更新2 将C:\Program Files(x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript\typescriptServices.js替换为中的文件。不过首先要做一个本地备份 与2013年相比: 安装TypeScript 1.8.5()
将C:\Program Files(x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript\typescriptServices.js替换为中的文件。但是,首先进行本地备份。如果您刚刚升级到Angular2 rc1,请确保您使用的是新的@angular导入语句,而不是Angular2:
`import { Component } from 'angular2/core';`
变成
`import { Component } from '@angular/core';`
我知道这看起来很简单,但可能会导致这个问题。查找Visual Studio 2015 TypeScript的beta版本2.0.0。 这个版本在我的机器上解决了同样的问题。但请记住,这是测试版。在toPromise.d.ts中 添加“从'../../Observable'导入{Observable};”
从“../../operator/toPromise”导入{ToPromiseSignature};
从'../../Observable'导入{Observable};
声明模块“../../Observable”{
可观测界面{
toPromise:toPromise签名;
}
}
您也可以对map.d.ts执行同样的操作
希望这有帮助。除了
import { Observable } from 'rxjs/Rx';
使函数提取数据
试试这个。它对你有用。
这对我很有用。如果您要从Angular2候选版本(即2.0.0-rc.1)升级到2.x.x版本,您需要:
从'rxjs'导入{Observable}
import { Observable } from 'rxjs/Rx';
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)