【问题标题】:JSDoc non-null assertionJSDoc 非空断言
【发布时间】:2022-11-22 10:46:13
【问题描述】:

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

// @ts-check

/** @type {HTMLInputElement} */
const element = document.getElementById('checkbox');

但我收到警告:

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

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

【问题讨论】:

  • 面对同样的问题,通常我在/** @type {...} */文档块之后添加@ts-ignore。也在寻找更好的解决方案。
  • 我可能错误地重现了错误......我拿了你的代码,将它添加到我自己身上并向我展示了 HTMLInputElement 变量的类型并且没有对类型不匹配发誓

标签: javascript jsdoc


【解决方案1】:

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

// @ts-check

const element = /** @type {HTMLInputElement} */ (document.getElementById('checkbox'));

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

【讨论】:

  • 如果它仍然抱怨你可以先投到unknown/** @type {HTMLInputElement} */ (/** @type {unknown} */ (document.getElementById('checkbox')));
猜你喜欢
  • 2021-06-15
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多