用于将类型参数引用到
Generator
像这样:
interface Generator<+Yield,+Return,-Next>
next()
您将获得此类型的结果:
type IteratorResult<+Yield,+Return> =
| { done: true, +value?: Return }
| { done: false, +value: Yield };
done: true
案例流假设
value
结果中可能缺少属性。这意味着,无论您如何键入生成器,Flow都假定
价值
可能是
void
done: false
案例流将使用您指定的任何类型作为
Yield
发电机的类型。因此,您可以检查
done
提炼
价值
const result = this.gen.next();
if (!result.done) {
this.state = {
mystring: result.value,
};
}
支票
!result.done
result
到
{ done: false, +value: Yield }
string
价值
,不可能
无效的
通过该更改,您可以更新要删除的状态类型
来自的类型联合
mystring
:
type State = {
mystring: string,
};
发电机
和
IteratorResult
以上来自Flow的标准类型定义,您可以在此处看到:
https://github.com/facebook/flow/blob/master/lib/core.js