我正在开发一个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()
,然后得到:码:
playerTimeOut: ?TimeoutID = null;
componentDidMount() {
const { children } = this.props;
const { index } = this.state;
this.playerTimeOut = setTimeout(() => {
clearTimeout(this.playerTimeOut);
this.setState({
index: index >= this.total ? 0 : index + 1
});
}, parseInt(children[index].attr.runningtime) * 1000);
}
非常感谢任何帮助或 build 性的改进:D
最佳答案
不确定要实现的魔术,但是会注意到超时将在第一次运行时清除,因此您无需显式调用clearTimeout
。
但是,如果确定需要此功能,则看到的流程是:
playerTimeOut: ?TimeoutID = null;
因此,它可能为null或未定义。
要解决此问题,请执行以下操作:
a)不带maybe type定义:
playerTimeOut: TimeoutID; // no question mark, no default value.
Try
b)使用
if
条件的refine maybe type:if(this.playerTimeOut) {
clearTimeout(this.playerTimeOut);
}
关于javascript - 流clearTimeout与TimeoutID不兼容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53299372/