2017-04-13 3 views
0

Visual Studio Code 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

이 문제를 해결 Appcanvas의 유형을 선언 자체를 시도 :

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

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

객체 리터럴을 사용하여도 작동합니다 : 우리는 찾고

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

이러한 경우에

+0

감사를 인텔리 개선에 당신은 당신의 대답에 대해 대단히 감사합니다! 해결 방법은 완벽하게 작동했습니다. 이 문제를 해결하기 위해 노력하고 있음을 알고 있습니다. 어쨌든, Visual Studio 코드는 JavaScript로 작업 할 수있는 훌륭한 경량 코드 편집기이므로 좋은 작업을 계속하십시오! :) – user1945293

관련 문제