我對於Typescript和typings相當陌生。我正在使用Visual Studio Code,希望能夠爲WebMIDI接口(在某些瀏覽器中可用的javasccript API)提供良好的自動完成功能。Map <Type1,Type2>沒有在WebMIDI類型中定義,不清楚從哪裏得到定義Map
我安裝了webmidi分型如下:
D:\Mike\Dev\WebMIDI\WebMidiTest>typings install --global dt~webmidi
webmidi
`-- (No dependencies)
安裝後,Visual Studio代碼似乎仍不明白所涉及的所有類型。當我實際查看webmidi的index.d.ts文件時,我注意到在Map
和Promise
類的使用下面有紅色下劃線。
我能夠通過安裝「es6-collections」打包程序來獲取Visual Studio代碼以瞭解地圖是什麼。我也試過typings install dt~promise
,它安裝了一些Promise
的定義,但是Visual Studio Code似乎還不理解WebMIDI定義文件中包含的Promise
的用法。
這是WebMIDI類型的錯誤,它們沒有正確指定依賴關係嗎?當你做typings install
時,那些依賴於其他打字套餐的打字套餐會自動安裝嗎?或者有什麼我在這裏失蹤的東西?
我明白了。就像昨天一樣,閱讀一篇文章說,打字工具是獲得打字的最新和最好的方式。很難跟蹤,但對於依賴關係,npm似乎會更好。但是,如果我執行npm install --save @ types/webmidi''',我仍然遇到同樣的問題,其中未定義映射,並且Visual Studio代碼強調它。還嘗試過'''npm install --save-dev @ ryancavanaugh/webmidi''',但是VSC甚至沒有識別出「WebMidi」標識符。它不清楚爲什麼,因爲它是在安裝了npm的.d.ts文件中定義的。 –
uglycoyote
這是因爲'Map'不是'webmidi'定義的一部分。它是es6標準的一部分。你可以嘗試在'tsconfig.json'中添加''lib「:[」es6「]到'compilerOptions'嗎? –
Saravana
我意識到Map不在webmidi中。問題是1)webmidi的類型defs是否應該被認爲是錯誤的,因爲沒有指定對另一個類型定義包的依賴關係,以及2)在哪裏找到Map的定義是「正確」的地方。我發現'npm install --save @ types/es6-collections''滿足了依賴關係,但不清楚這是否是「正確」的方式。我嘗試了'''lib:es6'''(沒有es6-集合)的建議。這也解析了Map,但是其他許多標識符都是未定義的,例如, EventTarget,Event等,並不清楚從哪裏得到它們。 – uglycoyote