VsCode、@angular/cli和Bing映射v8键入

VsCode、@angular/cli和Bing映射v8键入,angular,npm,angular-cli,bing-maps,typescript-typings,Angular,Npm,Angular Cli,Bing Maps,Typescript Typings,就我的一生而言,我不知道如何让每件事都正常运转。以下是我当前的版本设置: VsCode v1.13.1 节点v6.9.1 npm v5.1.0 @angular/cli v1.2.0 @角度v4.0.0 bingmaps v1.0.14 typescript v2.4.1 打字v2.1.1 据我所知,我应该能够运行npm安装——保存bingmaps,一切都会神奇地工作 我尝试过各种npm/打字/开发/本地/全局安装和导入/声明/等等的组合,但似乎没有任何效果 给定一个基本的、完全空的样板应用

就我的一生而言,我不知道如何让每件事都正常运转。以下是我当前的版本设置:

  • VsCode v1.13.1
  • 节点v6.9.1
  • npm v5.1.0
  • @angular/cli v1.2.0
  • @角度v4.0.0
  • bingmaps v1.0.14
  • typescript v2.4.1
  • 打字v2.1.1
据我所知,我应该能够运行
npm安装——保存bingmaps
,一切都会神奇地工作

我尝试过各种npm/打字/开发/本地/全局安装和导入/声明/等等的组合,但似乎没有任何效果

给定一个基本的、完全空的样板应用程序(
ng new testproject
),并使用VsCode作为IDE:

如何让bing mapsv8作为项目的一部分很好地工作?注意:特别是打字和编译,不必担心如何让地图工作/显示/等等,因为这不是问题所在

我非常希望停止看到
找不到名称“Microsoft”
的编译错误,并继续对其进行实际开发

多谢各位

编辑:

虽然@types/bingmaps是v7,而不是v8,但从技术上讲,这是问题的重复。做一个基本的
npm安装——保存bingmaps
看起来是可行的(据我所知,它应该是可行的)。事实上,我有了智能感知,世界上的一切似乎都很正常。(至少有一次,我似乎不能重复了)

。。。直到我尝试运行它(
ng serve-o

在运行失败(好的,甚至是编译失败)后,我让我的
Microsoft
(例如
let map=new Microsoft.Maps.map(…)
)获得了我曾经喜爱的红色曲线下划线,同时也让编译错误冲到了我的脸上:

在../src/app/app.component.ts(12,21)中出错:找不到名称“Microsoft”。

发生了什么事

编辑2:

抛出
声明变量Microsoft:any
消除了编译错误,但仍然没有智能感知

编辑3:

所以,快乐时光<代码>声明变量Microsoft:anytypings.d.ts的code>解决了编译问题(如前所述)

但是:如果我把
//
也加入到打字中,编译就会中断。然而,我得到了智能感知

奇怪的是,如果我开始服务(
ngserve-o
),没有
//
(因此编译很好),然后在运行ref时添加ref,我就可以让它运行并获得intellisense。如果我停止发球,当然,我需要移除裁判,开始发球,然后再把它放回去

我不知道为什么这些东西在一起似乎是相互排斥的

编辑4:

当我陷入疯狂时,
声明var-Microsoft:anytypings.d.ts中的code>解决组件中的编译问题。但是,如果在另一个文件(即我的服务)中提到
Microsoft
,它就会突然不知道我在说什么

如果有人有任何想法,你可以看到我在枕头上轻轻地哭泣

编辑5:

因为你大声喊叫。好的,目前我在我的
打字中有
declare var Microsoft:any
.d.ts
,它似乎在处理我的component.ts中提到的
Microsoft
,而我的服务中有一个
//
。ts来阻止一提到
Microsoft
,试试这个

npm install --save @types/bingmaps
然后在你的angular 4服务/模块/任何东西中

import { } from '@types/bingmaps';

declare var Microsoft: any;
然后,您将能够使用这样的类型

const loc = new Microsoft.Maps.Location(lat, lng);

但是Bingmaps脚本不会被加载,只加载DefiniteTyped中的类型。因此,要么在index.html的头部添加一个脚本标记以加载bingmaps js文件,要么在您的typescript中动态加载它,@types用于v7,而我使用的是v8。我现在生活在我第五次编辑的非常奇怪的设置中。它是有效的,现在必须足够好。