Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке BehaviorSubject?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**BehaviorSubject** - це спеціальний тип `Subject` в RxJS, який **зберігає останнє значення і одразу віддає його новим підписникам**. На відміну від звичайного `Subject`, він вимагає початкове значення. **Ключове:** новий підписник одразу отримує останнє збережене значення.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## Коротко (як на співбесіді) **BehaviorSubject** - це спеціальний тип `Subject` в RxJS, який **зберігає останнє значення і одразу віддає його новим підписникам**. На відміну від звичайного `Subject`, він **вимагає початкове значення**. Часто використовується в Angular для **простого state-management і передачі даних між компонентами**. --- ## Розгорнуто `BehaviorSubject` - це одночасно: - **Observable** (на нього можна підписуватися) - **Observer** (в нього можна надсилати значення через `next()`) Головна відмінність від `Subject`: **наявність поточного значення (current value)**. Приклад: ```ts import { BehaviorSubject } from 'rxjs'; const subject = new BehaviorSubject<number>(0); subject.subscribe(v => console.log('A:', v)); subject.next(1); subject.next(2); subject.subscribe(v => console.log('B:', v)); ``` Вивід: ``` A: 0 A: 1 A: 2 B: 2 ``` Другий підписник одразу отримав **останнє значення (2)**. --- ### В Angular використовується для Дуже часто, для зберігання стану в сервісі: ```ts @Injectable() export class UserService { private userSubject = new BehaviorSubject<User | null>(null); user$ = this.userSubject.asObservable(); setUser(user: User) { this.userSubject.next(user); } } ``` Компонент: ```ts this.userService.user$.subscribe(user => { console.log(user); }); ``` --- ### Відмінність від Subject | Тип | Зберігає значення | Початкове значення | Новий підписник отримує останнє | |---|---|---|---| | Subject | Ні | Ні | Ні | | BehaviorSubject | Так | Так | Так | --- ### Коли використовують BehaviorSubject Зазвичай, коли потрібен: - поточний state - глобальний стан - shared data - reactive store light-версія Наприклад: - поточний користувач - тема застосунку - стан завантаження - фільтри --- ## Типове follow-up питання на співбесіді Зазвичай запитують: **BehaviorSubject vs ReplaySubject?** Коротко: - BehaviorSubject → зберігає **1 останнє значення** - ReplaySubject → зберігає **N значень**Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.