这个问号在Flow中意味着什么:“?()=> void”

时间:2016-05-16 16:52:55

标签: javascript flowtype

GitHub project我最近看到了这个函数声明:

function configureStore(onComplete: ?() => void) {

这个问号是关于什么的?

我猜,onComplete是命名参数,获取函数调用。问号是声明这个参数可以是可选的,默认为“void”,这意味着像nil / null指针一样,这意味着“无闭包”。

我是对的吗?

1 个答案:

答案 0 :(得分:16)

几乎。

() => void是Flow的注释,用于不返回任何内容的函数(undefined,又称void 0)。

?MyType中的主要问号是Flow表达可空类型的方式。

因此,在这种情况下,configureStore接受一个名为onComplete的参数,该参数必须为null或不返回任何内容的函数。

Flow不会为onComplete添加默认值或以任何方式强制它,因为与typescript不同,Flow不会生成任何新的JS代码。在运行时,所有Flow注释都被剥离以获得vanilla JS,就是这样。