Присвоить элементы объекта команде контекстного меню - TypeScript - PullRequest
0 голосов
/ 09 марта 2019

Мне нужно заменить строку в JSON на функции (методы объекта) с соответствующим именем и передать ему аргумент, но получил

"Type 'this[Extract<keyof this, string>]' is not assignable to type '(event?: any) => void'"

Короче говоря, хотелось бы иметь что-то вроде:

if (typeof this[key] === 'function') {
    position.command = this[key];
}

Но мое решение не позволяет мне передавать аргументы ему

1 Ответ

0 голосов
/ 09 марта 2019

Попробуй это.Также обратите внимание, что это опасно, так как каждая функция будет назначена команде для этого.

  id = 1;
  name = 'alice';

  position = {
    command: null
  }

  ngOnInit() {
    for (const key in this) {
      console.log(key);

      if (typeof this[key] === 'function') {
          this.position.command = this[key];
      }
    }
  }

  someFunction() {
    console.log('someFunction');
  }

См. stackblitz , это не дает никакой ошибки.

Ошибка возникает только в том случае, если вы инициализируете команду строкой;например.command: ''

...