【发布时间】:2021-05-24 00:11:22
【问题描述】:
我有一个带有 // @ts-check 指令的 JS 文件,使用 JSDoc cmets 来表示类型。
问题是从document 检索元素时类型检查失败。
所以我们在 HTML 中:
<input id="myInput">...
当我在 JS 中获取此元素时,类型检查会引发错误:
// @ts-check
const myInput = document.getElementById('myInput');
myInput.value = 'foobar';
“HTMLElement”类型上不存在属性“值”
如果我使用 JSDoc @type 注释指定预期类型,那么也会引发错误:
// @ts-check
/** @type {HTMLInputElement} */
const myInput = document.getElementById('myInput');
myInput.value = 'foobar';
类型“HTMLElement”不可分配给类型“HTMLInputElement”。
“HTMLElement”类型中缺少属性“accept”。
如果我在 TS 中,我可以使用 document.getElementById('myInput') as HTMLInputElement 告诉它我期待这种类型。
如何在 JS 中使用 @ts-check 执行此操作?
【问题讨论】:
标签: javascript typescript jsdoc ts-check