我正在开发一个React Native App,我需要使用Flow。
我仍在了解let arr: Array<React$Element<Component>> = []
但是,根据我的研究,我仍然无法弄清如何定义将用于clearTimeout的变量的类型。
使用这个人说的话:0.63.x regression: setTimeout() & setInterval() return types broken
他说要使用:
const foo: TimeoutID = setTimeout(() => {}, 300);
const bar: IntervalID = setInterval(() => {}, 300);
但是最终我必须做一个clearTimeout()
并得到:
无法调用绑定了{{1}的
clearTimeout
和this.playerTimeOut
的{{1}},因为null或undefined(请参阅第17行)与timeoutId
(请参阅https://github.com/facebook/flow/blob/v0.78.0/lib/core.js#L733)不兼容。 / p>
代码:
TimeoutID
真的很感谢您的帮助或建设性的改进:D
答案 0 :(得分:4)
不确定要实现的功能是什么,但是会注意到超时将在第一次运行时清除,因此您无需显式调用clearTimeout
。
但是,如果您确定需要此功能,则会看到以下流程:
playerTimeOut: ?TimeoutID = null;
因此,它可能为null或未定义。
要解决此问题,请执行以下操作:
a)不使用maybe type进行定义:
playerTimeOut: TimeoutID; // no question mark, no default value.
b)refine maybe type使用if
条件:
if(this.playerTimeOut) {
clearTimeout(this.playerTimeOut);
}