回调中的问号
Question mark in callback
static setItem(key: string, value: string, callback?: ?(error: ?Error) => void)
这是AsyncStorage中setitem的声明。第三个参数是回调。有人可以在这里解释问号的使用吗?我熟悉如何使用 promise 但无法获取问号句柄。
AsyncStorage 使用 flow - Facebook 的开源静态类型检查器。您会在文件的开头找到@flow,它标记了启用流的源。 Flow 对变量类型进行了大量检查(包括自动类型推断),但它还允许您指定变量和参数的类型。例如,在上面的示例中,'key: string' 表示键应该是字符串类型(它不是有效的 javascript 构造 - 您不能在 javascript 中指定类型)。 React 内置了将其转换为纯 javascript 的转换器(因此所有类型都被剥离)但在此之前,流程会检查类型是否正确传递并找到诸如传递 null 或 undefined 之类的东西,然后将其用作对象等等其他检查。您可以阅读 http://flowtype.org/.
中的规格
所以回答你的详细问号问题:
- '?Error' 表示错误参数是 "Maybe" 类型 - 即它可以为 null 并且如果在代码回调的其他地方传递 null 或 undefined 则流不会抱怨(http://flowtype.org/docs/nullable-types.html#type-annotating-null )
- 'callback?' 表示可选参数 - 因此可能会被跳过 http://flowtype.org/docs/functions.html#function-based-type-annotations
- '?(error...)' 是另一种 "Maybe" 类型 - 它只是表示回调函数可能带有一个参数 ('error') 或根本没有参数。
static setItem(key: string, value: string, callback?: ?(error: ?Error) => void)
这是AsyncStorage中setitem的声明。第三个参数是回调。有人可以在这里解释问号的使用吗?我熟悉如何使用 promise 但无法获取问号句柄。
AsyncStorage 使用 flow - Facebook 的开源静态类型检查器。您会在文件的开头找到@flow,它标记了启用流的源。 Flow 对变量类型进行了大量检查(包括自动类型推断),但它还允许您指定变量和参数的类型。例如,在上面的示例中,'key: string' 表示键应该是字符串类型(它不是有效的 javascript 构造 - 您不能在 javascript 中指定类型)。 React 内置了将其转换为纯 javascript 的转换器(因此所有类型都被剥离)但在此之前,流程会检查类型是否正确传递并找到诸如传递 null 或 undefined 之类的东西,然后将其用作对象等等其他检查。您可以阅读 http://flowtype.org/.
中的规格所以回答你的详细问号问题:
- '?Error' 表示错误参数是 "Maybe" 类型 - 即它可以为 null 并且如果在代码回调的其他地方传递 null 或 undefined 则流不会抱怨(http://flowtype.org/docs/nullable-types.html#type-annotating-null )
- 'callback?' 表示可选参数 - 因此可能会被跳过 http://flowtype.org/docs/functions.html#function-based-type-annotations
- '?(error...)' 是另一种 "Maybe" 类型 - 它只是表示回调函数可能带有一个参数 ('error') 或根本没有参数。