Javascript в JetBrains IDE: назначение экземпляра с подсказкой типа базового класса параметру с подсказкой типа в качестве подкласса - PullRequest
0 голосов
/ 07 марта 2020

Примите во внимание следующее:

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 во время выполнения. IDE JetBrains правильно рассматривает свой тип как Element. "набрав" параметр функции рационально равный HTMLInputElement, IDE сообщает:

Тип аргумента Element не может быть назначен типу параметра HTMLInputElement

В среде IDE предлагается "изменить тип параметра на Element" ; но это было бы совершенно иррационально, так что внутри функции не только отключается функция автозаполнения, но и жалуются на «решение проблем» в специфических для класса c методах (например: методы stepUp() или stepDown() будут помечены как «неразрешенные») .

Итак, что я должен сделать, чтобы иметь соответствующие «подсказки» для IDE (не используется *) при разрешении предупреждения?!

1 Ответ

2 голосов
/ 07 марта 2020

Я понял это! Тип-подсказка inp в объявлении должно решить проблему:

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