![](/img/trans.png)
[英]Visual Studio Code JavaScript Intellisense not working on inline objects
[英]Visual Studio Code JavaScript Intellisense not working for objects properties
我正在使用Visual Studio Code 1.11.1。
對於以下代碼,Intellisense可以正常工作,要了解canvas變量的類型為HTMLCanvasElement :
var canvas = document.getElementsByTagName('canvas')[0];
實際上,當我寫該變量的名稱后跟一個點時,它向我展示了HTMLCanvasElement的所有屬性和方法。
但是,使用下面的代碼,其中我將該變量包裝在一個對象中(充當名稱空間),Intellisense不再理解該變量的類型為HTMLCanvasElement :
// create a namespace "App"
var App;
App = {};
App.canvas = document.getElementsByTagName('canvas');
當我寫“ App.canvas ”后跟一個點字符時,Intellisense不會向我顯示HTMLCanvasElement的所有屬性和方法。 實際上,它認為類型為any的 App.canvas 。
我也嘗試過使用@type批注,如以下代碼所示,但結果是相同的:
// create a namespace "App"
var App;
App = {};
/** @type {HTMLCanvasElement} */
App.canvas = document.getElementsByTagName('canvas')[0];
是否可以使Intellisense了解對象屬性的變量類型(例如在我的示例中為App.canvas )?
我致力於VSCode的JS / TS支持。 我們使用TypeScript項目來支持我們的JS和TS語言支持,因此相信您會遇到此錯誤: https : //github.com/Microsoft/TypeScript/issues/10868
解決方法是,嘗試在App
本身上聲明canvas
的類型:
/** @type {{canvas:HTMLCanvasElement}} */
var App;
App = {};
App.canvas = document.getElementsByTagName('canvas')[0];
使用對象文字也應該起作用:
var App = { canvas: document.getElementsByTagName('canvas')[0] }
在這種情況下,我們正在研究改進IntelliSense
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.