JavaScript中HTMLElement转HTMLInputElement,Svelte项目如何正确类型声明?
SvelteKit纯JavaScript项目VS Code类型报错解决方法
问题场景
维护基于SvelteKit的纯JS Svelte项目时,以下代码实际运行正常,但VS Code编辑器报错:
let el = document.getElementById("inputelement"); processData(el.value);
报错信息:Property 'value' does not exist on type 'HTMLElement'.js(2339)
尝试的无效方法
尝试用JSDoc声明变量类型为HTMLInputElement:
/** * @type {HTMLInputElement} */ let el = document.getElementById("inputelement");
触发新错误:Type 'HTMLElement' is missing the following properties from type 'HTMLInputElement': accept, align, alt, autocomplete, and 53 more.js(2740)
由于是纯JS项目,无法使用TypeScript的<HTMLInputElement>或as HTMLInputElement语法做类型断言,且不想通过@ts-ignore跳过检查,希望找到Svelte中类似Flow的类型注释方案。
有效解决方案
使用内联JSDoc类型断言即可解决问题,代码示例:
let el = /** @type {HTMLInputElement} */ (document.getElementById("inputelement")); processData(el.value);
内容的提问来源于stack exchange,提问作者ColorFlowing
相关产品推荐
相关产品推荐

