2017-04-13 79 views
0

我正在使用Visual Studio代碼1.11.1。Visual Studio代碼JavaScript Intellisense不適用於對象屬性

對於下面的代碼,智能感知正常工作,認識了帆布變量的類型HTMLCanvasElement的:

var canvas = document.getElementsByTagName('canvas')[0]; 

事實上,當我寫後面跟着一個點是該變量的名字向我展示了HTMLCanvasElement的所有屬性和方法。

但是,使用下面的代碼,其中,我包裹的物體(作爲命名空間)內部的變量,智能感知已不明白,該變量是類型的HTMLCanvasElement

// create a namespace "App" 
var App; 
App = {}; 

App.canvas = document.getElementsByTagName('canvas'); 

當我編寫「App.canvas」後跟一個點字符時,Intellisense不會顯示所有屬性和方法HTMLCanvasElement。實際上,它考慮App.canvas類型任何

我試過也使用@type註釋像在下面的代碼,但結果是一樣的:

// create a namespace "App" 
var App; 
App = {}; 

/** @type {HTMLCanvasElement} */ 
App.canvas = document.getElementsByTagName('canvas')[0]; 

是否有可能使智能感知理解的變量類型的屬性對象(例如App.canvas在我的例子中)?

回答

0

我在VSCode的JS/TS支持上工作。我們使用打字稿項目,我們的JS和TS語言支持兩個電源,所以相信你正在運行到這個錯誤:https://github.com/Microsoft/TypeScript/issues/10868

作爲一種變通方法,嘗試宣告的canvas類型上App本身:

/** @type {{canvas:HTMLCanvasElement}} */ 
var App; 
App = {}; 

App.canvas = document.getElementsByTagName('canvas')[0]; 

使用對象文本也應努力:

var App = { canvas: document.getElementsByTagName('canvas')[0] } 

我們正在調查這些案件提高智能感知

+0

謝謝你非常喜歡你的答案!該解決方法完美運作。很高興知道你正在努力解決這個問題。無論如何,保持良好的工作,因爲Visual Studio Code是一個功能強大的輕量級代碼編輯器,可以使用JavaScript! :) – user1945293

相關問題