javascript - 使用jsdoc注释,调用时如何指定泛型函数的输出类型

标签 javascript visual-studio-code jsdoc

我的代码类似于:

document.querySelectorAll('.thing').forEach(el => el.style.color = 'red');

VsCode 中的类型提示系统将 Element 中的 el.style 标记为缺失。我可以用以下方法解决这个问题:

/** @type {NodeListOf<HTMLElement>} */
const things = document.querySelectorAll('.thing');
things.forEach(el => el.style.color = 'red');

仅仅为了保持 VsCode 的类型系统满意而创建 var 似乎是错误的。

如果我使用 typescript ,我想我可以做到

document.querySelectorAll<HTMLElement>('.thing') // etc...

有没有办法告诉 VsCode 的类型系统我期望从泛型方法中获得哪种类型?

最佳答案

您可以使用 jsdoc cast为此:

// @ts-check
(/** @type {NodeListOf<HTMLElement>} */ (document.querySelectorAll('.thing'))).forEach(el => el.style.color = 'red');

请注意,您必须将转换的目标 ((document.querySelectorAll('.thing')) 括在括号中,以便该类型适用于正确的表达式。

关于javascript - 使用jsdoc注释,调用时如何指定泛型函数的输出类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56062478/

相关文章:

c# - 打印网页未显示一些图像和一些背景颜色 im 网页

node.js - 调试 SSR node.js 服务器端 VSCode

macos - 我如何摆脱 sudo 要求?

reactjs - React HOC(高阶组件)的 JSDoc 标签支持

javascript - react 代码中的@internal JavaScript 文档标记,这是 jsdoc、闭包还是其他?

javascript - Haxe 3.2 javascript 包名称

javascript - onbeforeunload jquery 和 css 样式处理程序?

javascript - 为多个 HTML 元素应用 .click() 函数并更改上下文

visual-studio-code - 用于在 nodejs 应用程序中查找未使用的公共(public)函数的 VScode 扩展

javascript - 我如何使用 JSDoc 枚举 "enums"?