Как связать универсальную функцию в TypeScript - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь привязать универсальную функцию к определенному контексту и параметру, однако я не могу найти правильный способ сделать это.

Вот мой код:

interface A {}

interface Repository<T> {
  save(item: T): boolean;
} 

const updater = <T>(repo: Repository<T>, item: T) => {
  // do things and update
};

const items: A[] = [];
const repo: Repository<A> = {
  save(item: A) {
    /* do things */
    return true;
  }
}

items.forEach(updater<A>.bind(null, repo)); // Line with issue

Идея заключается в том, чтобы иметь универсальную функцию, которая принимает хранилище в качестве первого параметра, а при привязке создаст функцию, подходящую для использования в forEach.Однако я получаю ошибки типа ( expected и cannot find name 'bind'

Я не совсем уверен, что там с моим синтаксисом что-то не так или я что-то упускаю.

Я также пытался:

updater.bind(null, repo)

Однако это не работает с опцией 3.2 strictBindCallApply, поскольку он принимает параметр типа T={}

Кто-нибудь знает правильный способ сделать это?

Playground link

...