Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 流clearTimeout与TimeoutID不兼容_Javascript_React Native_Flowtype - Fatal编程技术网

Javascript 流clearTimeout与TimeoutID不兼容

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

我正在开发一个React本机应用程序,需要使用Flow

我仍然在学习
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);
}