Знак вопроса типа потока до или после параметра?
Может кто-нибудь объяснить разницу между:
function foo(bar: ?string) {
console.log(bar);
}
и
function foo(bar?: string) {
console.log(bar);
}
Когда использовать один над другим?
Ответы
Ответ 1
В принципе
bar: ?string
принимает строку, null или void:
foo("test");
foo(null);
foo()
В то время как
bar?: string
Принимает только строку или пустоту:
foo("test");
foo();
Поскольку передача null вместо строки несколько бессмысленна, между ними нет реальной разницы в жизни.
Ответ 2
?string
(может быть, type) означает, что свойство bar
может быть string
как null
и void
.
bar?
означает, что это свойство не является обязательным.
Дополнительная информация: https://flow.org/en/docs/types/primitives/
Ответ 3
оп, пожалуйста, измените принятый ответ. Текущий принятый ответ не является правильным.