VSCode IntelliSense无法自动完成JavaScript DOM事件和方法 [英] VSCode IntelliSense does not autocomplete JavaScript DOM events and methods
问题描述
我正在使用Visual Studio Code版本1.17.1.
I am using Visual Studio Code version 1.17.1.
在*.js
文件中,当我键入document.querySelector("#elementId").style.
时,我没有样式(如边距,显示等)的IntelliSense提示.
在document.querySelector("#elementId").
In *.js
file when I type document.querySelector("#elementId").style.
I have no IntelliSense hints for styles (like margin, display, etc.).
Even no onclick
event hint after document.querySelector("#elementId").
我不使用任何npm软件包.这只是简单的html \ css \ js项目.
I don't use any npm packages. It is just simple html\css\js project.
如何打开正确的IntelliSense提示?谢谢.
How to turn on correct IntelliSense hints? Thanks.
推荐答案
因为querySelector
的结果是:
元素-最通用的基类或null
如果您已经知道ID,则可以使用 document.getElementById ()-返回更具体类的实例- HTMLElement -自动完成功能将按预期运行.
If you already know id you can use document.getElementById() - which returns instance of more specific class - HTMLElement - autocomplete will work as expected.
document.getElementById('elementId').
如果您不知道ID,但想要自动完成,则可以使用 JSDoc类型注释:
If you don't know id, but want autocomplete you can use JSDoc type annotations:
/** @type {HTMLElement} */
var el = document.querySelector(".myclass");
el.
// or without extra variable:
/** @type {HTMLElement} */
(document.querySelector(".myclass")).
我还没有真正测试过,但是您可以尝试以下方法:
I haven't really tested it but you can try something like that:
/**
* @type {function(string): HTMLElement}
*/
var querySelector = document.querySelector.bind(document);
querySelector('.myclass').
另一种选择是改变打字稿类型:
Another choice would be alter typescript types:
- 创建文件
dom.d.ts
- 附加到它:
interface NodeSelector {
querySelector<K extends keyof ElementTagNameMap>(selectors: K): ElementTagNameMap[K] | null;
querySelector<E extends HTMLElement = HTMLElement>(selectors: string): E | null;
querySelectorAll<K extends keyof ElementListTagNameMap>(selectors: K): ElementListTagNameMap[K];
querySelectorAll<E extends HTMLElement = HTMLElement>(selectors: string): NodeListOf<E>;
}
现在querySelector返回HTMLElement.
Now querySelector returns HTMLElement.
这篇关于VSCode IntelliSense无法自动完成JavaScript DOM事件和方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!