Visual Studio 代码 JavaScript Intellisense 不适用于对象属性
Visual Studio Code JavaScript Intellisense not working for objects properties
我正在使用 Visual Studio 代码 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[ 的所有属性和方法=39=].事实上,它认为 App.canvas 类型 any.
我也试过在下面的代码中使用 @type 注释,但结果是一样的:
// create a namespace "App"
var App;
App = {};
/** @type {HTMLCanvasElement} */
App.canvas = document.getElementsByTagName('canvas')[0];
是否可以让 Intellisense 理解对象属性的变量类型(如我的示例中的 App.canvas)?
我致力于 JS/TS 对 VSCode 的支持。我们使用 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
我正在使用 Visual Studio 代码 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[ 的所有属性和方法=39=].事实上,它认为 App.canvas 类型 any.
我也试过在下面的代码中使用 @type 注释,但结果是一样的:
// create a namespace "App"
var App;
App = {};
/** @type {HTMLCanvasElement} */
App.canvas = document.getElementsByTagName('canvas')[0];
是否可以让 Intellisense 理解对象属性的变量类型(如我的示例中的 App.canvas)?
我致力于 JS/TS 对 VSCode 的支持。我们使用 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