在Flow中,这个问号代表什么意思?"?() => void"

6
在一个GitHub项目中,我最近看到了这个函数声明:
function configureStore(onComplete: ?() => void) {

这个问号有什么作用?
我猜测,onComplete是一个命名参数,接收函数调用。而问号表示此参数可选,并且默认为“void”,这意味着与nil/null指针相同,意味着在此未分配“无闭包”。
我的理解正确吗?

不,那是一种类型。 - SLaks
你能否给我解释得更详细一些吗?(或者发送文档链接;我已经在谷歌上搜索了,但没有找到相关的内容) - delete
1
我猜这要么是 Flow,要么是 TypeScript。http://flowtype.org/,https://www.typescriptlang.org/ - Felix Kling
5
“?”表示这是Flow的可空类型,而不是TypeScript。 - Estus Flask
我刚刚将URL添加到了Github项目中。这里也有链接:https://github.com/fbsamples/f8app/blob/b5df451259897d1838933f01ad4596784325c2ad/js/store/configureStore.js#L47-L47 - delete
如果是来自Facebook的话,那就是流畅的 ;) - Felix Kling
1个回答

17

几乎了解。

() => void 是Flow中表示返回值是无的函数(即undefined,也就是void 0)的注释。

?MyType 中的问号是Flow表示可为空类型的方式。

所以在这种情况下,configureStore 接受一个参数叫做onComplete,必须是空或者一个返回值是无的函数。

Flow不会为onComplete添加默认值,也不会强制转换它,因为与Typescript不同,Flow不会生成任何新的JavaScript代码。运行时,所有Flow注释都被剥离以获取原始的JavaScript代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接