参数之前或之后的流类型问号?
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
以及null
和void
。
bar?
表示该属性是可选的。
更多信息:https://flow.org/en/docs/types/primitives/
【讨论】:
以上是关于参数之前或之后的流类型问号?的主要内容,如果未能解决你的问题,请参考以下文章