JSDoc на практике: как добавить типизацию в JS-проект без TypeScript
Наверное, каждый сталкивался с дилеммой: хочется типизацию, но втягивать TypeScript в проект и настраивать сборку ради этого — слишком жирно. Есть ли золотая середина?
Да, и это связка JSDoc + TypeScript Compiler. Без единого
🔹 Как настроить
🔹 Как типизировать переменные, функции и DOM без боли.
🔹 Как собирать кастомные типы через
Код по-прежнему работает прямо в браузере, а ошибки отлавливаются на этапе написания.
🖥 Читать статью
📱 @dev_notes_ru
#jsdoc #JavaScript #TypeScript
Наверное, каждый сталкивался с дилеммой: хочется типизацию, но втягивать TypeScript в проект и настраивать сборку ради этого — слишком жирно. Есть ли золотая середина?
Да, и это связка JSDoc + TypeScript Compiler. Без единого
.ts файла, но с полноценной проверкой в редакторе и CI. Разобрал реализацию этого подхода в проекте Kelp (автор — Крис Фердинанди). Делюсь выводами и настройками:🔹 Как настроить
tsc для работы с ванильным JS.🔹 Как типизировать переменные, функции и DOM без боли.
🔹 Как собирать кастомные типы через
@typedef и не плодить дубли.Код по-прежнему работает прямо в браузере, а ошибки отлавливаются на этапе написания.
#jsdoc #JavaScript #TypeScript
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Итераторы в JavaScript: подробное руководство с примерами
Вы точно пользуетесь итераторами каждый день — в
Если в голове каша из терминов «протокол итерации», Symbol.iterator и
✅ Чёткое разделение: iterable vs iterator — больше никакой путаницы
✅ Как работают
✅ Почему итераторы не создают копии данных в памяти (и когда это критично)
✅ Современный
И да, аналогия с книгой и закладкой действительно объясняет всё.
🖥 Читать статью
📱 @dev_notes_ru
#JavaScript #Итераторы
Вы точно пользуетесь итераторами каждый день — в
for...of, spread-операторе, деструктуризации. Но сможете сходу объяснить, чем итерируемый объект отличается от итератора? 🤔Если в голове каша из терминов «протокол итерации», Symbol.iterator и
next(), вот чёткое объяснение с примерами:keys(), values(), entries() на самом делеIterator.from() и ленивые методы (take, drop, filter)И да, аналогия с книгой и закладкой действительно объясняет всё.
#JavaScript #Итераторы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Обработка параметров в JavaScript обработчиках событий
Вопрос управления обработчиками событий часто недооценивают, пока не возникает проблема с утечками памяти в SPA. Когда обработчику требуется передать параметры (например, ID сущности), стандартные подходы перестают работать предсказуемо, а удаление таких обработчиков становится нетривиальной задачей.
В новой статье системно разобрали эту тему:
✅ Почему нельзя просто написать
✅ Как работают замыкания и
✅ Когда делегирование событий производительнее индивидуальных обработчиков
✅ Шпаргалка: 4 вопроса, которые помогут выбрать правильный паттерн
Материал будет полезен, если вы пишете на чистом JS или хотите лучше понимать, как работают события внутри фреймворков.
🖥 Читать статью
📱 @dev_notes_ru
#JavaScript
Вопрос управления обработчиками событий часто недооценивают, пока не возникает проблема с утечками памяти в SPA. Когда обработчику требуется передать параметры (например, ID сущности), стандартные подходы перестают работать предсказуемо, а удаление таких обработчиков становится нетривиальной задачей.
В новой статье системно разобрали эту тему:
addEventListener('click', deleteTask(id))AbortController для передачи параметровМатериал будет полезен, если вы пишете на чистом JS или хотите лучше понимать, как работают события внутри фреймворков.
#JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
👌1
URL Pattern API: Руководство по нативной маршрутизации в JavaScript
Обработка URL — одна из типовых задач как на клиенте, так и на сервере. Традиционный подход с ручным разбором строк быстро становится громоздким при появлении опциональных параметров или вложенных путей.
С сентября 2025 года у JavaScript-разработчиков появился встроенный инструмент для этой задачи — URL Pattern API. Он предоставляет единый синтаксис для валидации URL и извлечения параметров, который работает во всех современных браузерах и в Node.js/Deno/Bun.
В статье подробно разбираются:
✅ Синтаксис шаблонов: именованные группы, модификаторы, регулярные выражения.
✅ API: методы
✅ Практика: примеры использования в Service Worker, SPA и серверном приложении.
Также в материале затронуты вопросы производительности и ограничения использования API для высоконагруженных серверных проектов.
🖥 Читать статью
📱 @dev_notes_ru
#JavaScript #WebAPI
Обработка URL — одна из типовых задач как на клиенте, так и на сервере. Традиционный подход с ручным разбором строк быстро становится громоздким при появлении опциональных параметров или вложенных путей.
С сентября 2025 года у JavaScript-разработчиков появился встроенный инструмент для этой задачи — URL Pattern API. Он предоставляет единый синтаксис для валидации URL и извлечения параметров, который работает во всех современных браузерах и в Node.js/Deno/Bun.
В статье подробно разбираются:
test() для проверки соответствия и exec() для извлечения данных.Также в материале затронуты вопросы производительности и ограничения использования API для высоконагруженных серверных проектов.
#JavaScript #WebAPI
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
Атрибуты и свойства HTML: в чём разница
Распространённая ситуация: разработчик пытается прочитать значение поля ввода через
Это не ошибка JavaScript, а следствие фундаментального различия между атрибутами и свойствами DOM. Атрибуты — это исходные параметры, заданные в HTML (чертёж элемента). Свойства — это текущее состояние DOM-объекта в памяти браузера (реальность). И они могут расходиться.
В новой статье детально разбирается:
✅ Почему
✅ Как работает
✅ Особенности логических атрибутов (
✅ Что важно знать о свойствах и атрибутах разработчикам на React.
Материал будет полезен как начинающим, так и опытным разработчикам, желающим систематизировать знания о DOM.
🖥 Читать статью
📱 @dev_notes_ru
#HTML #JavaScript #DOM #Frontend
Распространённая ситуация: разработчик пытается прочитать значение поля ввода через
getAttribute('value'), но получает не актуальные данные, введённые пользователем, а первоначальное значение из HTML-разметки.Это не ошибка JavaScript, а следствие фундаментального различия между атрибутами и свойствами DOM. Атрибуты — это исходные параметры, заданные в HTML (чертёж элемента). Свойства — это текущее состояние DOM-объекта в памяти браузера (реальность). И они могут расходиться.
В новой статье детально разбирается:
input.value и getAttribute('value') ведут себя по-разному.defaultValue и для чего он нужен.checked, disabled).Материал будет полезен как начинающим, так и опытным разработчикам, желающим систематизировать знания о DOM.
#HTML #JavaScript #DOM #Frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
Проксирование
Стандарт Fetch не специфицирует проксирование HTTP-запросов, поэтому каждый серверный JavaScript-рантайм реализует эту возможность по-своему. В результате разработчики сталкиваются с несовместимостью решений при смене среды исполнения.
В статье рассматриваются следующие подходы:
✅ Bun и Deno — встроенная поддержка прокси через опции
✅ Node.js — два пути: глобальные переменные окружения или пакет
⚠️ Cloudflare Workers — отсутствие нативной поддержки и три архитектурных альтернативы (Docker-контейнер, TCP-сокеты, вынос логики в отдельный микросервис)
Также приведён чек-лист для проверки, действительно ли трафик идёт через прокси, и разбор типовых ошибок.
🖥 Читать статью
📱 @dev_notes_ru
#JavaScript #Nodejs
fetch() в серверном JavaScriptСтандарт Fetch не специфицирует проксирование HTTP-запросов, поэтому каждый серверный JavaScript-рантайм реализует эту возможность по-своему. В результате разработчики сталкиваются с несовместимостью решений при смене среды исполнения.
В статье рассматриваются следующие подходы:
fetch()undici для per-request настройки⚠️ Cloudflare Workers — отсутствие нативной поддержки и три архитектурных альтернативы (Docker-контейнер, TCP-сокеты, вынос логики в отдельный микросервис)
Также приведён чек-лист для проверки, действительно ли трафик идёт через прокси, и разбор типовых ошибок.
#JavaScript #Nodejs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
JSON в браузере:
Спойлер: из JSON — это не замена
Кажется, что новый синтаксис
🔹 Пожизненное кеширование — данные останутся в памяти на всю сессию
🔹 Нет отмены запроса —
🔹 Минимум информации об ошибках — не поймёшь, 404 это или CORS
В статье сравнили оба подхода по безопасности, кешу, стримингу и контролю. В конце — готовый чек-лист: когда брать import, а когда только
🖥 Читать статью
📱 @dev_notes_ru
#JavaScript #JSON #import #fetch
import или fetch — руководство по выборуСпойлер:
importfetch()Кажется, что новый синтаксис
import data from './file.json' with { type: 'json' } проще и современнее. Но у него есть три жёстких ограничения:🔹 Пожизненное кеширование — данные останутся в памяти на всю сессию
🔹 Нет отмены запроса —
AbortController не подключается🔹 Минимум информации об ошибках — не поймёшь, 404 это или CORS
В статье сравнили оба подхода по безопасности, кешу, стримингу и контролю. В конце — готовый чек-лист: когда брать import, а когда только
fetch с проверкой Content-Type.#JavaScript #JSON #import #fetch
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1🔥1