我有此代码:
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.
如何在打字稿中键入生成器
答案 0 :(得分:0)
生成器函数是将返回生成器的函数。在您的情况下,runWithCancel
是生成器,而不是生成器函数。
尝试以下操作:
export const runWithCancel = <R, TNext>(fn: () => Generator<unknown, R, TNext>) => {
const gen = fn();
};
答案 1 :(得分:0)
Generator
是GeneratorFunction
的结果。如果fn
是一个函数,那么我认为fn
的类型将是GeneratorFunction
,而gen
的类型将是Generator
:
export const runWithCancel = <R, TNext>(fn: GeneratorFunction) => {
const gen = fn() as Generator<unknown, R, TNext>;
};