Roh*_*han 4 javascript reactjs flowtype
a?: string和a: ?stringFlow 之间有什么区别?
function concat(a: ?string, b: ?string): string {
}
Run Code Online (Sandbox Code Playgroud)
与
function concat(a?: string, b?: string): string {
}
Run Code Online (Sandbox Code Playgroud)
a: ?string是Maybe类型 -实际上string | null | void在这种情况下。
a?: string是可选属性 / 参数 -string | void
它们之间的区别在于,也许类型也可以是(除了类型本身之外)null或void,并且只能是可选参数void。
当调用带有可选参数或可能带有参数function foo(a?: string)或function(a: ?string)-的参数时,可以省略参数。
对象属性的另一个区别是-只能省略可选属性:
type WithOptional = {
foo?: string;
}
type WithMaybe = {
foo: ?string;
}
const a: WithOptional = {}; // OK
const b: WithMaybe = {}; // Error
Run Code Online (Sandbox Code Playgroud)