2017-07-06 85 views
0

對於我的生活,我無法弄清楚如何讓一切正常工作。這是我目前的版本設置:VsCode,@ angular/cli和Bing Maps v8類型

  • VsCode v1.13.1
  • 節點v6.9.1
  • NPM V5.1.0
  • @角/ CLI V1.2.0
  • @angular V4.0.0
  • bingmaps v1.0.14
  • 打字稿V2.4.1
  • 分型2.1.1

從我收集的內容來看,我應該只能運行npm install --save bingmaps,一切都應該神奇地工作。

我已經嘗試過npm/typings dev/local/global安裝和導入/聲明/等等的各種組合。但似乎沒有得到它的工作。

給出一個基本的,完全是空的樣板應用程序(ng new testproject),並使用VsCode作爲IDE:

怎樣才能獲得Bing地圖V8作爲該項目的一部分工作很好?注:類型和編譯,特別是不擔心如何讓地圖工作/顯示/等,因爲這不是問題。

我非常想停止看到Cannot find name 'Microsoft'編譯錯誤,並繼續進行一些實際的開發。

謝謝。

編輯:

這是技術上的問題this重複,我想,但@類型/ bingmaps是V7,V8不。做一個基本的npm install --save bingmaps似乎是有效的(應該,據我所知)。我確實懂得了智慧,一切都與世界相符。 (至少有一次,我似乎無法重複)。

...直到我試圖運行它(ng serve -o)。

無法運行後(當然,編譯,甚至),我然後有我Microsoft(如let map = new Microsoft.Maps.Map(...))獲得愛過紅色波浪下劃線,以及在我的臉上已經拋出的編譯錯誤:

ERROR in ...../src/app/app.component.ts (12, 21): Cannot find name 'Microsoft'.

這是怎麼回事?

編輯2:

扔在declare var Microsoft: any;typings.d.ts擺脫了編譯錯誤的,但仍然沒有智能感知。

編輯3:

所以,好玩的時候。 declare var Microsoft: any;加入到typings.d.ts解決了編譯(如上所述)。但是:如果我在/// <reference ... />中也輸入/// <reference ... />,那麼編譯就會中斷。但是,我收到了智能感知。

奇怪的是,如果我開始服務(ng serve -o),沒有/// <reference ... />(所以編譯罰款),然後它運行加入裁判,我去運行它,並獲得智能。我應該停止服務,當然,我需要刪除參考,開始服務,然後可以把它放回去。

我不確定爲什麼看起來這些東西是相互排斥在一起的。

編輯4:

正如我螺旋陷入瘋狂,declare var Microsoft: any;typings.d.ts解決了組件編譯問題。但是,在另一個文件中提到Microsoft(即我的服務),它突然不知道我在說什麼。

如果有人有任何想法,你可以找到我輕輕地哭泣到我的枕頭。

編輯5:

對於大聲喊叫。好吧,我目前在declare var Microsoft: anytypings.d.ts這似乎是服用任何照顧我component.ts Microsoft提到,而我在我的service.ts一個/// <reference path="..." />停止從在Microsoft色變投擲...

回答

0

試試這個

npm install --save @types/bingmaps 

那麼你的角4服務/模塊/任何

import { } from '@types/bingmaps'; 

declare var Microsoft: any; 

然後你將能夠使用類型這樣

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

但Bingmaps腳本將不受此加載,剛剛從DefinitelyTyped類型。因此,要麼在index.html的頭部添加腳本標記以加載bingmaps js文件,要麼在您的打字稿中動態加載它

+0

@types適用於v7,而我正在使用v8。我目前與我第五次編輯中相當奇怪的設置一起生活。它的工作,現在必須足夠好。 – Krenom