Реализуйте класс ObservableSet
, который поддерживает все стандартные операции класса Set
, но позволяет с помощью колбэка отслеживать изменения в экзампляре.
У обычного Set
довольно много методов:
for..of
Все эти методы должны поддерживаться у ObservableSet
.
Конструктор ObservableSet
должен принимать два аргумента:
iterable
, которым иницилизируется сетКогда мы выполняем одно из мутирующих действий, необходимо вызывать колбэк из конструктора. Первый аргумент колбэка — строка с названием действия, а второй — аргументы, с которыми вызывался соответствующий метод.
const set = new ObservableSet( (action, args) => console.log({ action, args }), [1, 2, 3] ); set.add(12); // action === "add", args === [12] set.has(12); set.size; set.delete(12); // action === "delete", args === [12] set.clear(); // action === "clear", args === []