как набрать функцию генератора в машинописи - PullRequest
2 голосов
/ 02 мая 2020

У меня есть этот код:

export const runWithCancel = <R, TNext>(fn: Generator<unknown, R, TNext>) => {
  const gen = fn();
};

Но я получаю

This expression is not callable.
  Type 'Generator<unknown, R, TNext>' has no call signatures.

Как мне набрать генератор в машинописи

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

A Generator является результатом GeneratorFunction. Если fn является функцией, то я думаю, что тип fn будет GeneratorFunction, а gen будет Generator:

export const runWithCancel = <R, TNext>(fn: GeneratorFunction) => {
  const gen = fn() as Generator<unknown, R, TNext>;
};
0 голосов
/ 02 мая 2020

Функция генератора - это функция, которая возвращает генератор. В вашем случае runWithCancel является генератором, а не функцией генератора.

Попробуйте следующее:

export const runWithCancel = <R, TNext>(fn: () => Generator<unknown, R, TNext>) => {
  const gen = fn();
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...