[英]What is the difference between (a: ?string) and (a?: string) in flow type?
Flow中的? a?: string
和a: ?string
a?: string
什么区别?
function concat(a: ?string, b: ?string): string {
}
VS
function concat(a?: string, b?: string): string {
}
a: ?string
是Maybe类型 - 实际上是string | null | void
string | null | void
在这种情况下string | null | void
。
a?: string
是可选属性 / paramerter - string | void
string | void
它们之间的区别在于,类型也可以(除了类型本身) null
或void
,并且可选参数only void
。
当使用可选或可能的参数function foo(a?: string)
或function(a: ?string)
调用函数时 - 在这两种情况下都可以省略参数。
另一个区别在于对象属性 - 只能省略可选属性:
type WithOptional = {
foo?: string;
}
type WithMaybe = {
foo: ?string;
}
const a: WithOptional = {}; // OK
const b: WithMaybe = {}; // Error
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.