Javascript 流clearTimeout与TimeoutID不兼容
我正在开发一个React本机应用程序,需要使用Flow 我仍然在学习Javascript 流clearTimeout与TimeoutID不兼容,javascript,react-native,flowtype,Javascript,React Native,Flowtype,我正在开发一个React本机应用程序,需要使用Flow 我仍然在学习let-arr:Array=[] 但是,尽管我研究了很多东西,但我仍然无法确定如何定义用于清除超时的变量类型 用这家伙说的话: 他说使用: const foo: TimeoutID = setTimeout(() => {}, 300); const bar: IntervalID = setInterval(() => {}, 300); 但最终我必须做一个clearTimeout(),我得到: 无法使用绑定到t
let-arr:Array=[]
但是,尽管我研究了很多东西,但我仍然无法确定如何定义用于清除超时的变量类型
用这家伙说的话:
他说使用:
const foo: TimeoutID = setTimeout(() => {}, 300);
const bar: IntervalID = setInterval(() => {}, 300);
但最终我必须做一个clearTimeout()
,我得到:
无法使用绑定到timeoutId
的clearTimeout
调用this.playerTimeOut
,因为null或undefined(参见第17行)与timeoutId
不兼容(参见)
代码:
非常感谢任何帮助或建设性的改进:D不确定您正在实现什么魔法,但会注意到超时将在第一次运行时被清除,因此您不需要显式调用
clearTimeout
但是,如果您确定需要,请参阅以下内容:
playerTimeOut: ?TimeoutID = null;
因此,它可能为null或未定义
要解决此问题,请执行以下操作之一:
a) 定义,但不包括:
b) 使用if
条件:
if(this.playerTimeOut) {
clearTimeout(this.playerTimeOut);
}
谢谢你的精彩解释!当然,如果没有maybe类型并说,这只是这种类型的未注册变量,它应该清除超时,但仍然是TimourID类型!你太棒了!!还有一件事,谢谢你用b)方法解释,这有助于回答我的另一个问题:谢谢!
playerTimeOut: TimeoutID; // no question mark, no default value.
if(this.playerTimeOut) {
clearTimeout(this.playerTimeOut);
}