VueJS createDecorator с проблемой TypeScript - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь создать собственный декоратор в VueJS с помощью TypeScript. Я могу вызвать метод декоратора, но проблема связана с оператором this. Когда мой декоратор вызывает метод, он не передает правильную ссылку. Вот пример кода

export default (eventKey: string) => createDecorator((options: any, key: string) => {
  const playingSoccer = PlayingSoccer.getInstance();
  const originalMethod = options.methods[key];

  if (!options.methods || !Object.prototype.hasOwnProperty.call(options.methods, key)) {
    return;
  }

  if (!eventKey && key) eventKey = key;

  options.sockets = options.sockets || {};
  options.sockets[eventKey] = (...args: any) => {
    originalMethod.apply(args); // this doesn't pass correct reference
  };

  playingSoccer.ws.onmessage = (event: MessageEvent) => {
    let { data } = event;
    data = JSON.parse(data);
    options.sockets[data.event](data.body);
  };
});

Спасибо.

...