Как создать декоратор на typescript для слежения за изменениями?

Я хочу, как только значение изменится - отправить его в webworker для хранения "базы данных" в другом потоке.
Просто подписаться на Observable или передать значение по ссылке я не могу.

Хотел бы что-то такое....

@WebworkerParam('SECTIONNAME-PARAM1')
public MyParamSection1Param1 = new BehaviourSubject('my Value');

@WebworkerParam('SECTIONNAME-PARAM2')
public MyParamSection1Param2 = 'содержимое';


Как подвязаться на значения через декоратор и
1. Как происходит .next() на стриме - то связаться с функцией sendToWebWorker('SECTIONNAME-PARAM1', value)
2. и так же для обычных переменных.
  • Вопрос задан
  • 38 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега TypeScript
Тлен
На вскидку не вижу проблемы, что-то такое должно сработать:
function doSomething(param: string, value: unknown) {
  console.log('doSomething', param, value);
}

function WebworkerParam(param: string){
  return (target: any, key: PropertyKey) => {
    let subscription: Subscription;
    let innerValue: any;

    Object.defineProperty(target, key, {
      get() {
        return innerValue;
      },
      set(value) {
        if (subscription)
          subscription.unsubscribe();

        if(value instanceof BehaviorSubject)
          subscription = value.subscribe(newValue => doSomething(param, newValue));
        else 
          doSomething(param, value);

        innerValue = value; 
      }   
    })
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы