Конвертировать, привести или пометить узел в качестве элемента в JavaScript - PullRequest
2 голосов
/ 06 марта 2019

У меня есть следующий пример JS, который работает нормально ..

const mainContainer = document.getElementById('main-container');
const subContainers = mainContainer.querySelectorAll('.sub-container');

for (let i = 0; i < subContainers.length; i++) {

    const subContainer = subContainers[i];
    const subContainerStyle = window.getComputedStyle(subContainer);
    const subContainerPadding = subContainerStyle.getPropertyValue('padding');

    console.log(subContainerPadding);
}

Моя IDE (PhpStorm 2018.2.6 на macOS 10.14.3) жалуется, однако, что window.getComputedStyle() ожидает объект Element

Это потому, что subContainer является узлом, когда он передается, так как mainContainer.querySelectorAll() возвращает NodeList, содержащий более абстрактные объекты Node, элементом которого является только один тип

  • Есть ли способ получить элемент с узла с nodeType из Node.ELEMENT_NODE?
  • или Есть ли способ привести переменную Node к типу Element?
  • или Есть ли способ пометить переменную как тип Element?

UPDATE

Как отмечает @lena в комментариях, обновление PhpStorm до последней версии (2018.3.4) сняло предупреждения

Как отметил @sergio в комментариях, querySelectorAll() фактически возвращает NodeListOf<Element>

Я полагаю, что вопрос все еще обозначает более общие случаи!

...