在此示例中:
type Union = () => Generator<undefined, void, number> | void;
function callbacker(_callback: Union) {}
callbacker(function* () {
const value = yield;
});
TypeScript 错误:
'yield' expression implicitly results in an 'any' type because its containing generator lacks a return-type annotation.
如果我从联合体中删除
void
,它会起作用,但我真的需要那里有空。
有什么方法可以让它在不接触
callbacker
的呼叫的情况下工作吗?这是库的一部分,我希望用户能够自动推理。
您可以像这样使用函数重载:
type Union = () => Generator<undefined, void, number> | void;
function callbacker(_callback: () => Generator<undefined, void, number>): void;
function callbacker(_callback: () => void): void;
function callbacker(_callback: Union) {}
callbacker(function* () {
const value = yield;
});