Таких картинок - множество. Почему-то typescript ругается 🤷♂️ Что я делаю не так?
В песочницу закинь
Ошибка вам сообщает что тип Element это более широкий тип и в нем нету полей imageElement
https://codepen.io/MiAngPro/pen/gOZZPeR?editors=1011 - так же должен быть прописан тип изображения одного из div? 🧐
Это то понятно. Мне не понятно как исправить ошибку 🤷♂️ Нужно писать интерфейс? Или есть другой способ?
getElementsByClassName всегда возвращает коллекцию элементов, а тебе нужен уточненный тип для каждого элемента. Тебе нужно использовать либо: const foo = querySelectorAll<HTMLImageElement>('.foo') Но здесь надо понимать что по сути здесь кастится Element к HTMLImageElement, но гарантии что там окажется именно этот тип нет (кто знает что под этим селектором у тебя не что-то другое?).
Спасибо. Я попробовал решить проблему созданием интерфейса. Ошибка исчезла. Но полагаю, это костыль. Очень хочется сделать встроенными средствами языка. Попробую Ваш способ. Может, получится. Всё равно спасибо за грамотный и спокойный отклик 🤝
Чаще всего используется первый способ, так как редко кто-то хочет заморачиваться с сужениями типов для элементов. Но чтобы ты знал как это можно сделать через через сужение, то примерно так. const elements = Array.from(document.getElementsByClassName('foo')) const imageElements = elements.filter((element): element is HTMLImageElement => element instanceof HTMLImageElement)
А потом ты его песочницу в chatgpt запроксируешь? :)
теряйся мистер
Твой ответ в определенной степени отображение уровня культуры общения с другими участниками данного сообщества) Браво)
Всё ты наказан, теперь неделю на js пишешь
Сергеев, месяц без типизации!
не груби
Обсуждают сегодня