React native 回调中的问号

React native 回调中的问号,react-native,React Native,这是异步存储中setitem的声明。第三个参数是回调。有人能解释一下问号的用法吗。我对如何使用promise很熟悉,但没有问号。AsyncStorage使用flow-Facebook的开源静态类型检查器。您将在文件的开头找到@flow,它标记为启用流的源。Flow对变量类型进行大量检查(包括自动类型推断),但它还允许您指定变量和参数的类型。例如,在上面的示例中,“key:string”表示键应该是字符串类型(它不是有效的javascript构造-您不能在javascript中指定类型)。Reac

这是异步存储中setitem的声明。第三个参数是回调。有人能解释一下问号的用法吗。我对如何使用promise很熟悉,但没有问号。

AsyncStorage使用flow-Facebook的开源静态类型检查器。您将在文件的开头找到@flow,它标记为启用流的源。Flow对变量类型进行大量检查(包括自动类型推断),但它还允许您指定变量和参数的类型。例如,在上面的示例中,“key:string”表示键应该是字符串类型(它不是有效的javascript构造-您不能在javascript中指定类型)。React内置了转换器,可以将其转换为纯javascript(因此所有类型都被剥离),但在此之前,流会检查类型是否正确传递,并找到诸如传递null或undefined之类的内容,然后将其用作对象和许多其他检查。您可以在中阅读规格

因此,回答您的详细问号问题:

  • “?Error”表示错误参数是“Maybe”类型-即,如果在代码回调()的其他地方传递null或undefined,则它可以为null,并且流不会抱怨
  • “callback?”表示可选参数-因此可能会跳过它
  • “?(error…”是另一种“Maybe”类型-它只是指示回调函数可能接受一个参数(“error”)或根本不接受任何参数
static setItem(key: string, value: string, callback?: ?(error: ?Error) => void)