✨ Почему стоит использовать Tagged Unions при разработке на TypeScript
Сталкивались с ситуацией, когда TypeScript не может точно определить тип в объединении A | B? Это приводит к небезопасным проверкам и потенциальным багам.
Tagged Unions (дискриминантное объединение) — добавляет уникальное свойство “тег” в каждый тип, позволяя компилятору безошибочно определять конкретный тип и гарантировать надежность.
👉 https://habr.com/ru/companies/megafon/articles/933752/
Сталкивались с ситуацией, когда TypeScript не может точно определить тип в объединении A | B? Это приводит к небезопасным проверкам и потенциальным багам.
Tagged Unions (дискриминантное объединение) — добавляет уникальное свойство “тег” в каждый тип, позволяя компилятору безошибочно определять конкретный тип и гарантировать надежность.
👉 https://habr.com/ru/companies/megafon/articles/933752/
👍7🔥4👏2❤1
✨ Как ИИ меняет разработку на Angular
В интервью Даниэль Зогль, специалист по ИИ, рассказал, как БЯМ (Большая Языковая Модель) трансформирует работу с Angular.
Он поделился своими мыслями о текущих инструментах, их достоинствах и недостатках. Отметил, что из-за частых обновлений Angular, БЯМ иногда генерирует устаревший код, однако это можно легко решить.
👉 https://www.angulararchitects.io/en/blog/interview-how-ai-is-transforming-angular-development-a-conversation-with-daniel/
В интервью Даниэль Зогль, специалист по ИИ, рассказал, как БЯМ (Большая Языковая Модель) трансформирует работу с Angular.
Он поделился своими мыслями о текущих инструментах, их достоинствах и недостатках. Отметил, что из-за частых обновлений Angular, БЯМ иногда генерирует устаревший код, однако это можно легко решить.
👉 https://www.angulararchitects.io/en/blog/interview-how-ai-is-transforming-angular-development-a-conversation-with-daniel/
💩9❤1👍1🔥1😁1
✨ Что такое инкрементальная гидратация в Angular
Инкрементная гидратация — это продвинутый подход, который позволяет оставлять части приложения дегидратированными и запускать их гидратацию по мере необходимости, улучшая производительность и пользовательский опыт.
Она уменьшает размер начальных бандлов, сокращает First Input Delay (FID) и Cumulative Layout Shift (CLS).
👉 https://habr.com/ru/articles/933794/
Инкрементная гидратация — это продвинутый подход, который позволяет оставлять части приложения дегидратированными и запускать их гидратацию по мере необходимости, улучшая производительность и пользовательский опыт.
Она уменьшает размер начальных бандлов, сокращает First Input Delay (FID) и Cumulative Layout Shift (CLS).
👉 https://habr.com/ru/articles/933794/
🔥8👍4
✨ Angular Signals + RxJS
С появлением сигналов многие разработчики задаются вопросом: пора ли забыть про RxJS? Спойлер — нет! Сигналы и RxJS не конкуренты, а дополняющие друг друга инструменты.
Читай статью, чтобы узнать, как правильно их сочетать и написать свой стейт-менеджер с красивым API.
👉 https://habr.com/ru/articles/935526/
С появлением сигналов многие разработчики задаются вопросом: пора ли забыть про RxJS? Спойлер — нет! Сигналы и RxJS не конкуренты, а дополняющие друг друга инструменты.
Читай статью, чтобы узнать, как правильно их сочетать и написать свой стейт-менеджер с красивым API.
👉 https://habr.com/ru/articles/935526/
❤9🔥3👏2💩2🥱2👎1
✨ История одного бага
Редкие баги, которые воспроизводятся раз в сто попыток — настоящая головная боль. Они появляются в самый неподходящий момент, исчезают при попытке показать коллегам и возвращаются снова, когда код уже попал в продакшн.
Ростислав Терехов рассказал историю о легаси проекте на Angular 11, в котором контент приложения иногда смещался влево за навигационную панель, и поделился подробным расследованием причин этой проблемы.
👉 https://habr.com/ru/articles/935972/
Редкие баги, которые воспроизводятся раз в сто попыток — настоящая головная боль. Они появляются в самый неподходящий момент, исчезают при попытке показать коллегам и возвращаются снова, когда код уже попал в продакшн.
Ростислав Терехов рассказал историю о легаси проекте на Angular 11, в котором контент приложения иногда смещался влево за навигационную панель, и поделился подробным расследованием причин этой проблемы.
👉 https://habr.com/ru/articles/935972/
❤8👍4🔥3😁1
✨ Профессиональная обработка ошибок в TypeScript
Ошибки в приложениях неизбежны, но подход к их обработке кардинально влияет на качество кода.
Традиционный throw/try-catch в языках с непроверяемыми исключениями может скрывать возможные ошибки от сигнатур функций, что усложняет их отслеживание и делает поток выполнения менее очевидным.
Функциональный подход с типами вроде Result<Ok, Error> явно описывает возможные ошибки в типах возврата, что упрощает анализ и обработку ошибок, хотя и может увеличить многословность кода.
👉 https://habr.com/ru/companies/piter/articles/935278/
Ошибки в приложениях неизбежны, но подход к их обработке кардинально влияет на качество кода.
Традиционный throw/try-catch в языках с непроверяемыми исключениями может скрывать возможные ошибки от сигнатур функций, что усложняет их отслеживание и делает поток выполнения менее очевидным.
Функциональный подход с типами вроде Result<Ok, Error> явно описывает возможные ошибки в типах возврата, что упрощает анализ и обработку ошибок, хотя и может увеличить многословность кода.
👉 https://habr.com/ru/companies/piter/articles/935278/
🔥3👏2👍1👎1
✨ Поиск на RxJS и Taiga UI
Когда портал компании растет, одного источника поиска может быть недостаточно.
Антон Марченко поделился опытом создания гибкого поискового компонента, который работает с множественными источниками данных одновременно. Главная фишка — возможность динамически добавлять новые поисковые сервисы через конфиг.
👉 https://habr.com/ru/companies/tbank/articles/936794/
Когда портал компании растет, одного источника поиска может быть недостаточно.
Антон Марченко поделился опытом создания гибкого поискового компонента, который работает с множественными источниками данных одновременно. Главная фишка — возможность динамически добавлять новые поисковые сервисы через конфиг.
👉 https://habr.com/ru/companies/tbank/articles/936794/
👍8💩6🔥2❤1🤡1
✨ Для чего нужны enum в TypeScript
Если вы только начинаете изучать TypeScript, enum — один из базовых инструментов, которые стоит освоить. Он позволяет создать фиксированный набор значений с защитой от случайных изменений на уровне типизации.
Хотя в статье и говорится, что его изменить нельзя, но технически enum можно модифицировать, например, через Object.defineProperty.
👉 https://habr.com/ru/articles/936650/
Если вы только начинаете изучать TypeScript, enum — один из базовых инструментов, которые стоит освоить. Он позволяет создать фиксированный набор значений с защитой от случайных изменений на уровне типизации.
Хотя в статье и говорится, что его изменить нельзя, но технически enum можно модифицировать, например, через Object.defineProperty.
👉 https://habr.com/ru/articles/936650/
👍5✍1👏1👌1🤡1
✨ 5 полезных utility-типов в TypeScript
Часто стандартных возможностей TypeScript не хватает для решения специфических задач.
Статья показывает, как с помощью кастомных utility types можно элегантно решать повседневные проблемы: от управления состоянием асинхронных операций до создания типобезопасных URL.
👉 https://www.angularspace.com/5-typescript-utility-types-you-cant-live-without/
Часто стандартных возможностей TypeScript не хватает для решения специфических задач.
Статья показывает, как с помощью кастомных utility types можно элегантно решать повседневные проблемы: от управления состоянием асинхронных операций до создания типобезопасных URL.
👉 https://www.angularspace.com/5-typescript-utility-types-you-cant-live-without/
👍6👎3🎉2🔥1🤡1
✨ Свой LLM-агент на Typescript с использованием MCP
Помните Джарвиса из "Железного человека"?
Антон Морев мечтал о таком помощнике еще с 2008 года, а теперь показывает, как это реализовать с помощью Model Context Protocol (MCP).
В статье разбирается: создание MCP-сервера, подключение к OpenAI, работа через CLI и Telegram-бота. Есть готовый код на GitHub.
👉 https://habr.com/ru/articles/926548/
Помните Джарвиса из "Железного человека"?
Антон Морев мечтал о таком помощнике еще с 2008 года, а теперь показывает, как это реализовать с помощью Model Context Protocol (MCP).
В статье разбирается: создание MCP-сервера, подключение к OpenAI, работа через CLI и Telegram-бота. Есть готовый код на GitHub.
👉 https://habr.com/ru/articles/926548/
👍8❤3🤡3🔥1
✨Результаты State of CSS 2025
Новые возможности CSS, такие как :has() или cascade layers, уверенно завоевывают место в арсенале разработчиков.
State of CSS 2025 показывает: эти фичи не просто очередные бесполезные новинки, а надежные инструменты для упрощения работы.
Хочешь быть в курсе трендов? Более 5,5 тысяч разработчиков поделились своим мнением о настоящем и будущем CSS.
👉 https://2025.stateofcss.com/
Новые возможности CSS, такие как :has() или cascade layers, уверенно завоевывают место в арсенале разработчиков.
State of CSS 2025 показывает: эти фичи не просто очередные бесполезные новинки, а надежные инструменты для упрощения работы.
Хочешь быть в курсе трендов? Более 5,5 тысяч разработчиков поделились своим мнением о настоящем и будущем CSS.
👉 https://2025.stateofcss.com/
👍7🎉2❤1🔥1
✨ Вышел Angular 20.2.0
Команда Angular выпустила новую версию, которая приносит множество улучшений. Давайте рассмотрим ключевые изменения.
Zoneless становится стабильным
Одно из самых значительных событий этого релиза — Zoneless больше не находится в режиме developer preview.
Новая эра анимаций
Angular представляет новое API для работы с анимациями, которое позволяет создавать их с помощью CSS. В связи с этим, пакет
Маршрутизация
Метод getCurrentNavigation теперь устарел, ему на смену приходит currentNavigation.
Поддержка TypeScript 5.9
Angular идет в ногу со временем и добавляет поддержку последней версии TypeScript.
Прочее
Добавлена поддержка использования as-алиасов в блоках else if, а также целый ряд других улучшений.
👉 https://github.com/angular/angular/releases/tag/20.2.0
Команда Angular выпустила новую версию, которая приносит множество улучшений. Давайте рассмотрим ключевые изменения.
Zoneless становится стабильным
Одно из самых значительных событий этого релиза — Zoneless больше не находится в режиме developer preview.
Новая эра анимаций
Angular представляет новое API для работы с анимациями, которое позволяет создавать их с помощью CSS. В связи с этим, пакет
@angular/animations
объявляется устаревшим и будет полностью удален в будущих версиях.Маршрутизация
Метод getCurrentNavigation теперь устарел, ему на смену приходит currentNavigation.
Поддержка TypeScript 5.9
Angular идет в ногу со временем и добавляет поддержку последней версии TypeScript.
Прочее
Добавлена поддержка использования as-алиасов в блоках else if, а также целый ряд других улучшений.
👉 https://github.com/angular/angular/releases/tag/20.2.0
🔥36👍10🎉4
✨ Angular CLI MCP Server
LLM генерирует устаревший Angular-код? Команда Angular представила официальный MCP-сервер.
Он решает главную проблему LLM — генерацию кода на основе устаревших данных. Сервер предоставляет AI-ассистентам прямой доступ в реальном времени к официальной документации, актуальным best practices и анализу вашего воркспейса.
Если у вас уже есть опыт работы с ним, то команда ждет ваши отзывы и идеи на GitHub.
С подробностями можно ознакомиться в официальной документации или в статье.
👉 https://angular.love/angular-cli-mcp-server-keep-your-ai-up-to-date
LLM генерирует устаревший Angular-код? Команда Angular представила официальный MCP-сервер.
Он решает главную проблему LLM — генерацию кода на основе устаревших данных. Сервер предоставляет AI-ассистентам прямой доступ в реальном времени к официальной документации, актуальным best practices и анализу вашего воркспейса.
Если у вас уже есть опыт работы с ним, то команда ждет ваши отзывы и идеи на GitHub.
С подробностями можно ознакомиться в официальной документации или в статье.
👉 https://angular.love/angular-cli-mcp-server-keep-your-ai-up-to-date
🔥16👍9❤6🎉1
✨ Монорепозитории с PNPM Workspaces
PNPM — не только быстрый пакетный менеджер, но и мощный инструмент для управления монорепозиториями.
В статье рассказывается, как настроить PNPM Workspaces с нуля и использовать TypeScript Project Reference.
👉 https://stefanhaas.xyz/article/monorepos-with-pnpm-workspaces/
PNPM — не только быстрый пакетный менеджер, но и мощный инструмент для управления монорепозиториями.
В статье рассказывается, как настроить PNPM Workspaces с нуля и использовать TypeScript Project Reference.
👉 https://stefanhaas.xyz/article/monorepos-with-pnpm-workspaces/
👍6🤔3🔥2👏1👨💻1
✨ Core Web Vitals-2025: как управлять скоростью и стабильностью сайта
Core Web Vitals остаются индустриальным стандартом для оценки качества сайтов. Понимание и оптимизация этих показателей напрямую влияют не только на пользовательский опыт, но и на ранжирование сайта в поисковой выдаче.
В статье разбираются три ключевые метрики:
Cumulative Layout Shift (CLS): Оценивает визуальную стабильность. Узнайте, как избавиться от прыгающих элементов из-за асинхронной загрузки, медиа без заданных размеров и кастомных шрифтов.
Interaction to Next Paint (INP): Новая метрика, заменившая FID, измеряет отзывчивость интерфейса на действия пользователя. Как долгие задачи в основном потоке влияют на INP и как это исправить.
Largest Contentful Paint (LCP): Показывает скорость загрузки основного контента. Рассказывается об оптимизации загрузки ресурсов, уменьшении Time To First Byte (TTFB) и влиянии энтропии изображения.
👉 https://habr.com/ru/companies/sberdevices/articles/940578/
Core Web Vitals остаются индустриальным стандартом для оценки качества сайтов. Понимание и оптимизация этих показателей напрямую влияют не только на пользовательский опыт, но и на ранжирование сайта в поисковой выдаче.
В статье разбираются три ключевые метрики:
Cumulative Layout Shift (CLS): Оценивает визуальную стабильность. Узнайте, как избавиться от прыгающих элементов из-за асинхронной загрузки, медиа без заданных размеров и кастомных шрифтов.
Interaction to Next Paint (INP): Новая метрика, заменившая FID, измеряет отзывчивость интерфейса на действия пользователя. Как долгие задачи в основном потоке влияют на INP и как это исправить.
Largest Contentful Paint (LCP): Показывает скорость загрузки основного контента. Рассказывается об оптимизации загрузки ресурсов, уменьшении Time To First Byte (TTFB) и влиянии энтропии изображения.
👉 https://habr.com/ru/companies/sberdevices/articles/940578/
👍4❤2🔥1👏1🤡1
✨ Как сделать отчёты Playwright понятными, а падения — полезными
Хотите, чтобы ваши автотесты на Playwright не только работали, но и помогали быстро находить причины падений?
Алексей Иванов рассказал про то, как добиться читаемых отчетов и информативных ошибок.
👉 https://habr.com/ru/companies/2gis/articles/935882/
Хотите, чтобы ваши автотесты на Playwright не только работали, но и помогали быстро находить причины падений?
Алексей Иванов рассказал про то, как добиться читаемых отчетов и информативных ошибок.
👉 https://habr.com/ru/companies/2gis/articles/935882/
👍8❤3🔥2👏1🤡1
✨ Миграция на Angular Signals
Сигналы в Angular обсуждают повсюду, однако многие откладывают их внедрение в свои проекты.
Статья развеивает сомнения и предлагает пошаговый план, как безболезненно и постепенно перевести проект на новый реактивный примитив, не ломая все и сразу.
👉 https://www.angularspace.com/migrating-to-angular-signals/
Сигналы в Angular обсуждают повсюду, однако многие откладывают их внедрение в свои проекты.
Статья развеивает сомнения и предлагает пошаговый план, как безболезненно и постепенно перевести проект на новый реактивный примитив, не ломая все и сразу.
👉 https://www.angularspace.com/migrating-to-angular-signals/
❤4👍4🔥2
✨ Расследуем самое длинное issue в Jest
Казалось бы, обычная задача по обновлению версии Node.js с 16.10 до 18 обернулась рандомно падающими тестами в CI/CD. Расследование показало, что причина — утечка памяти, а проблема оказалась настолько глубокой, что ее решение затянулось на два года и потребовало участия команд Jest, Node.js и V8.
Читай статью, чтобы узнать все технические детали этого расследования и как в итоге удалось закрыть самое длинное issue в истории Jest.
👉 https://habr.com/ru/companies/ozontech/articles/933884/
Казалось бы, обычная задача по обновлению версии Node.js с 16.10 до 18 обернулась рандомно падающими тестами в CI/CD. Расследование показало, что причина — утечка памяти, а проблема оказалась настолько глубокой, что ее решение затянулось на два года и потребовало участия команд Jest, Node.js и V8.
Читай статью, чтобы узнать все технические детали этого расследования и как в итоге удалось закрыть самое длинное issue в истории Jest.
👉 https://habr.com/ru/companies/ozontech/articles/933884/
🔥4😁2👍1
🚨 NX взломан
Популярная билд-система NX была скомпрометирована. Вредоносный post-install скрипт, попавший в несколько версий пакета, похищает учетные данные, API-ключи, переменные окружения и криптовалютные кошельки с машин разработчиков.
Зловред использует AI-инструменты, такие как Claude Code и Gemini CLI, для поиска чувствительных данных в файловой системе. Найденные секреты упаковываются и отправляются в публичный GitHub-репозиторий s1ngularity-repository, созданный от имени жертвы.
В статье подробная инструкция, как проверить свою систему, полный список уязвимых версий и шаги по устранению последствий.
👉 https://semgrep.dev/blog/2025/security-alert-nx-compromised-to-steal-wallets-and-credentials/
Популярная билд-система NX была скомпрометирована. Вредоносный post-install скрипт, попавший в несколько версий пакета, похищает учетные данные, API-ключи, переменные окружения и криптовалютные кошельки с машин разработчиков.
Зловред использует AI-инструменты, такие как Claude Code и Gemini CLI, для поиска чувствительных данных в файловой системе. Найденные секреты упаковываются и отправляются в публичный GitHub-репозиторий s1ngularity-repository, созданный от имени жертвы.
В статье подробная инструкция, как проверить свою систему, полный список уязвимых версий и шаги по устранению последствий.
👉 https://semgrep.dev/blog/2025/security-alert-nx-compromised-to-steal-wallets-and-credentials/
🙈26😁12❤3👍1🔥1
✨ Angular и AI: ускоряем процесс разработки
С внедрением MCP-сервера, команда Angular задала интересный тренд, меняющий подход к использованию фреймворка.
В статье автор поделился своим опытом: он поднял MCP-сервер, связал его с GitHub Copilot и прогнал несколько промптов. Спойлер: результат действительно впечатляет. Интеграция с Angular CLI дает AI-агенту гораздо больше контекста, и код на выходе получается качественнее. Попробуйте сами.
👉 https://habr.com/ru/articles/942376/
С внедрением MCP-сервера, команда Angular задала интересный тренд, меняющий подход к использованию фреймворка.
В статье автор поделился своим опытом: он поднял MCP-сервер, связал его с GitHub Copilot и прогнал несколько промптов. Спойлер: результат действительно впечатляет. Интеграция с Angular CLI дает AI-агенту гораздо больше контекста, и код на выходе получается качественнее. Попробуйте сами.
👉 https://habr.com/ru/articles/942376/
🔥9👍3👏2