JetBrains IDE 上的 JavaScript : assigning the base class type-hinted instance to the parameter type-hinted as a sub-class

标签 javascript ide phpstorm webstorm jetbrains-ide

考虑以下因素:

let container = document.getElementById('container');
let inp = container.querySelector('#my-input-element');
forceDisabled(inp);
/**
 * @param {HTMLInputElement} inp
 */
function forceDisabled(inp) {
    inp.disabled = true;
}

inp 将是有效的 HTMLInputElement在运行时。 JetBrains IDE 正确地将其类型视为 Element 。通过“键入”将函数参数合理地设置为 HTMLInputElement,IDE 会提示:

Argument type Element is not assignable to parameter type HTMLInputElement

IDE确实建议“将参数类型更改为Element;但这是完全不合理的,因此函数内部不仅禁用自动完成功能,而且还会提示特定于类的方法的“解决问题”(例如: stepUp()stepDown() 的方法被标记为“未解决”)

那么,在解决警告的同时,我应该怎么做才能为 IDE 提供适当的“键入提示”(不使用 *)?!

最佳答案

我明白了! Type-hinting声明中的 inp 应该可以解决该问题:

/** @type {HTMLInputElement} */
let inp = container.querySelector('#my-input-element');

关于JetBrains IDE 上的 JavaScript : assigning the base class type-hinted instance to the parameter type-hinted as a sub-class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60576562/

相关文章:

javascript - 将字符串转换为对象 javascript/jquery

javascript - 使用 jquery 显示基于复选框列表项的隐藏文本框

c++ - 为什么在 Visual Studio 中单词 `false` 写成蓝色,而单词 `FALSE` 写成紫色?

c++ - 不使用 Ctrl+Space 的 Netbeans 中的可变代码完成

javascript - 在 React Apollo 查询返回后调度 Redux 操作

javascript - 用其他数组中的元素替换 Javascript 数组元素

debugging - bash 的图形化调试器

interface - 如何自动生成已实现接口(interface)的方法

javascript - 在 phpstorm 中正确地语法高亮 javascript

php - 尝试使用 xdebug 在 cli 上调试 phpunit 单元测试失败