Что это простыми словами
Angular Signals — это новый способ работы с данными в приложениях на Angular. Когда что-то меняется (например, пользователь нажал кнопку или пришли данные с сервера), нужные части интерфейса обновляются сами — без лишней работы и проверок.
Аналогия: представьте табло в аэропорту. Когда статус рейса меняется, табло обновляется само — ему не нужно каждую секунду проверять все рейсы подряд. Signals работают так же: данные сообщают «я изменился», и только те части страницы, которые эти данные показывают, перерисовываются.
Это не отдельный фреймворк — это новая возможность внутри Angular, появившаяся в 2023 году.
Официальное определение
Теперь, когда суть понятна, вот как это описывают в документации. Эту формулировку вы встретите в вакансиях и в речи Angular-разработчиков.
«Signals — система реактивности, основанная на примитивах для отслеживания изменения состояния и автоматического обновления зависимых вычислений».
Разберём термины. «Реактивность» — когда одно изменилось, другое обновилось само. «Примитивы» — базовые встроенные механизмы языка/фреймворка, из которых собирается всё остальное. «Состояние» — текущие данные приложения (что в корзине, открыто ли меню, какой пользователь залогинен). «Зависимые вычисления» — части кода, которые используют эти данные и должны пересчитаться, когда данные изменились.
Зачем нужен и какую задачу решает
До Signals в Angular отслеживание изменений работало через Zone.js: фреймворк проверял всё приложение целиком после каждого события. Это медленно и расходует ресурсы.
Signals решают две главные задачи:
Производительность — обновляются только те части интерфейса, где данные действительно изменились. Приложение работает быстрее, особенно большое.
Понятность — код становится проще и предсказуемей. Разработчик явно видит, какие данные откуда берутся и кто их использует.
Signals — это альтернатива асинхронной библиотеке RxJS, которую Angular использовал для управления данными. RxJS мощный, но сложный; Signals проще освоить и в большинстве случаев его достаточно.
К кому относится: язык, специальность, экосистема
Signals — это часть Angular, одного из трёх основных фреймворков фронтенда. Работает на языке JavaScript (почти всегда вместе с TypeScript). Signals относится к специальности frontend-разработчик.
Важно: Signals доступны только в Angular версии 16 и новее (с мая 2023 года). В старых проектах на Angular его не будет.
В экосистеме Angular Signals работает вместе с:
RxJS — библиотека для работы с асинхронными данными (запросы к серверу, таймеры). Signals постепенно берёт на себя часть её задач.
NgRx — «склад данных» для больших приложений. С Signals NgRx становится проще и быстрее.
С чем взаимозаменяем
Внутри Angular Signals частично заменяет связку Zone.js + RxJS для управления состоянием. Но это НЕ жёсткая замена: в одном проекте могут работать и Signals, и RxJS одновременно. Signals берёт на себя простые случаи, а RxJS остаётся для сложной асинхронной логики.
Если сравнивать с другими фреймворками: похожие механизмы есть в Vue (Composition API) и Solid.js. Но это концептуальное сходство — технически они не взаимозаменяемы, потому что привязаны к разным фреймворкам.
Переход на Signals внутри проекта на Angular дешевле, чем переход на другой фреймворк: код можно мигрировать постепенно, участок за участком.
Что не путать
Signals ≠ отдельный фреймворк: это встроенная возможность Angular, а не самостоятельный инструмент, который устанавливают отдельно.
Signals ≠ замена RxJS: в проектах они часто работают вместе. Signals упрощает повседневные задачи, RxJS остаётся для сложных сценариев.
Signals ≠ Angular: если в резюме написано «Angular», это не значит, что человек работал с Signals. Спрашивайте версию Angular и опыт именно с Signals, если это важно.
«Signal» в разных контекстах: слово «signal» встречается в программировании в разных смыслах (например, операционные системы). В контексте фронтенда и Angular речь всегда о механизме реактивности.
Насколько это важно при отборе
Короткий ответ: обычно не критично, но зависит от проекта.
Signals появился недавно (2023), и большинство проектов на Angular пока работают без него. Опытный Angular-разработчик освоит Signals за пару недель — это эволюция внутри знакомого фреймворка, а не смена технологического стека.
Когда стоит обращать внимание на опыт с Signals:
Проект уже использует Signals — человеку будет проще влиться, если он с ним знаком. Но отсутствие опыта не повод отказать: знание Angular важнее.
Планируется миграция на Signals — опыт будет плюсом, но не обязательным требованием.
Когда не стоит требовать:
Проект на старой версии Angular (до 16) — там Signals физически нет.
Работа в основном с существующим кодом на RxJS — переписывать всё на Signals не планируется.
Правило простое: опыт с Angular критичен, опыт именно с Signals — приятный бонус. Отсеивать кандидатов за отсутствие Signals — ошибка, так вы потеряете хороших Angular-разработчиков.
Это общий ориентир. В разных компаниях требования отличаются, поэтому всегда сверяйтесь с текстом конкретной вакансии.