JSDoc 非空断言

d-_*_*_-b 5 javascript jsdoc

在 javascript 中,使用 JSDoc,我正在查询页面上的元素:

// @ts-check

/** @type {HTMLInputElement} */
const element = document.getElementById('checkbox');
Run Code Online (Sandbox Code Playgroud)

但我收到警告:

输入“HTMLElement | null' 不可分配给类型'HTMLInputElement'。类型“null”不可分配给类型“HTMLInputElement”.ts(2322)

有没有办法断言此类型不为空,就像您在打字稿中使用!运算符所做的那样?

Yus*_* T. 7

查看文档后,这可以使用内联转换来完成。所以在你的情况下,正确的代码应该是这样的:

// @ts-check

const element = /** @type {HTMLInputElement} */ (document.getElementById('checkbox'));
Run Code Online (Sandbox Code Playgroud)

另外,请确保在/** @type {...} */注释之后需要使用括号将代码括起来。