Middle+
Маселе: Observer/Көзөмөлчү үлгүсү менен subscribe, unsubscribe жана next методдору бар болгон класс түзүңүз. Бардык методдор TypeScriptте катуу түрдө типтелиши керек. subscribe методу жазылуудан чыгуу үчүн функция кайтаруусу керек.
sobes.tech AI
AIден жооп
typescript class Observer<T> { private observers: Set<(data: T) => void> = new Set();
subscribe(fn: (data: T) => void): () => void { this.observers.add(fn); // Возвращаем функцию отписки return () => this.unsubscribe(fn); }
unsubscribe(fn: (data: T) => void): void { this.observers.delete(fn); }
next(data: T): void { this.observers.forEach(fn => fn(data)); } }
// Пример использования: const obs = new Observer<number>(); const unsubscribe = obs.subscribe(value => console.log('Получено:', value)); obs.next(42); // Выведет: Получено: 42 unsubscribe(); obs.next(100); // Ничего не выведет