簡體   English   中英

Visual Studio Code JavaScript Intellisense無法用於對象屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM