在GitHub project我最近看到了这个函数声明:
function configureStore(onComplete: ?() => void) {
这个问号是关于什么的?
我猜,onComplete
是命名参数,获取函数调用。问号是声明这个参数可以是可选的,默认为“void”,这意味着像nil / null指针一样,这意味着“无闭包”。
我是对的吗?
答案 0 :(得分:16)
几乎。
() => void
是Flow的注释,用于不返回任何内容的函数(undefined
,又称void 0
)。
?MyType
中的主要问号是Flow表达可空类型的方式。
因此,在这种情况下,configureStore
接受一个名为onComplete
的参数,该参数必须为null或不返回任何内容的函数。
Flow不会为onComplete
添加默认值或以任何方式强制它,因为与typescript不同,Flow不会生成任何新的JS代码。在运行时,所有Flow注释都被剥离以获得vanilla JS,就是这样。