键入 PhpStorm 的 jQuery 方法

Typehinting jQuery methods for PhpStorm

提问人:miken32 提问时间:6/1/2021 最后编辑:LazyOnemiken32 更新时间:6/1/2021 访问量:364

问:

我遇到了与这个问题相同的问题,但我使用的是 JavaScript,而不是 TypeScript,因此那里的解决方案不适用。

使用以下代码:

$("input").each(function(i, el) {
    console.log(el.value);
});

我收到关于以下内容的投诉:el.value

未解析的变量值

这是因为 jQuery 类型提示为 但该属性仅存在于某些子类上,例如 。elHTMLElementvalueHTMLInputElement

我发现使此警告安静的唯一方法是这样的,我并不是为了一个小警告而疯狂地这样做(在某些情况下,它会产生另一个关于“冗余变量”的警告):

$("input").each(function(i, el) {
    /** @type {HTMLInputElement} */
    const input = el;
    console.log(input.value);
});

有没有更干净的方法来解决这个问题?我确实尝试了这样的内联类型定义,但没有任何运气:

$("input").each(function(i, /** @type {HTMLInputElement} */el) {
    console.log(el.value);
});

下面是其中每个在 IDE 中的外观:

screenshot of problem

JavaScript phpstorm webstorm jetbrains-ide 类型提示

评论

1赞 Barmar 6/1/2021
也许在函数之前或内部会更好地工作。@param
0赞 miken32 6/1/2021
只是试了一下,我能让它工作的唯一方法是将匿名函数移动到单独的行上,然后在它之前使用两个参数做一个完整的 JSDoc 块。内联似乎没有任何区别。
0赞 lena 6/1/2021
不幸的是,像你所做的那样在变量之前添加注释是唯一的方法:(@typeel

答: 暂无答案