参数之前或之后的流类型问号?

Posted

技术标签:

【中文标题】参数之前或之后的流类型问号?【英文标题】:flow type question mark before or after param? 【发布时间】:2018-04-29 02:40:28 【问题描述】:

谁能解释一下两者的区别:

function foo(bar: ?string) 
  console.log(bar);

和:

function foo(bar?: string) 
  console.log(bar);

什么时候使用一个而不是另一个?

【问题讨论】:

flow.org/en/docs/types/maybe 和 flow.org/en/docs/types/functions/… 【参考方案1】:

基本上

bar: ?string

接受一个字符串,null 或 void:

foo("test");
foo(null);
foo()

虽然

bar?: string

只接受一个字符串或 void:

foo("test");
foo();

由于传递 null 而不是字符串有点毫无意义,因此它们之间没有现实生活中的差异。

【讨论】:

我在某处看到过bar?: ?string,你什么时候会用到它?还是说没有意义? @tieme 不,这没有任何意义(至少对我来说不是):) 检查。在对象文字内部? type Styles = fontName?: ?string; 这里解释得很清楚:flow.org/en/docs/types/maybe @BradPeabody 根据文档 prop?: foo 是“可选属性语法”,我猜这是maybe 语法的特定用法【参考方案2】:

?string(可能是类型)表示bar 属性可以是string 以及nullvoid

bar? 表示该属性是可选的。

更多信息:https://flow.org/en/docs/types/primitives/

【讨论】:

以上是关于参数之前或之后的流类型问号?的主要内容,如果未能解决你的问题,请参考以下文章

Java泛型的类型参数中的问号是啥意思? [复制]

Java重要技术(23)泛型之问号通配符

springboot请求体中的流只能读取一次的问题

log4j日志文件名与行号显示乱码? 问号? 参数问号? 日志问号?补

使用jQuery获取完整的URL,包括问号后的参数?

MSDN搬运 之 [编写流]