param之前或之后的流式问号?

Vic*_*Vic 20 javascript ecmascript-6 flowtype

有人可以解释之间的区别:

function foo(bar: ?string) {
  console.log(bar);
}
Run Code Online (Sandbox Code Playgroud)

和:

function foo(bar?: string) {
  console.log(bar);
}
Run Code Online (Sandbox Code Playgroud)

何时使用一个而不是另一个?

Jon*_*lms 29

基本上

bar: ?string
Run Code Online (Sandbox Code Playgroud)

接受字符串,null或void:

foo("test");
foo(null);
foo()
Run Code Online (Sandbox Code Playgroud)

bar?: string
Run Code Online (Sandbox Code Playgroud)

只接受字符串或空格:

foo("test");
foo();
Run Code Online (Sandbox Code Playgroud)

传递null而不是字符串有点无意义,它们之间没有真正的生命差异.

  • 我在某处看到过`bar?:?string`,你什么时候使用它?或者这没有意义? (2认同)
  • 根据文档`{prop ?: foo}`定义的@BradPeabody是“可选属性语法”,我猜这是对“也许”语法的特定用法 (2认同)

kin*_*ser 12

?string(也许型)表示bar的特性可以是string藏汉如nullvoid.

bar? 表示此属性是可选的.

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