Can someone explain the difference between:
function foo(bar: ?string) {
console.log(bar);
}
and:
function foo(bar?: string) {
console.log(bar);
}
When to use one over the other?
Can someone explain the difference between:
function foo(bar: ?string) {
console.log(bar);
}
and:
function foo(bar?: string) {
console.log(bar);
}
When to use one over the other?
Basically
bar: ?string
accepts a string, null or void:
foo("test");
foo(null);
foo()
While
bar?: string
Accepts only a string or void:
foo("test");
foo();
As passing null instead of a string is somewhat senseless, theres no real life difference between them.
?string (maybe type) means that bar property can be string aswell as null and void.
bar? means that this property is optional.
More info: https://flow.org/en/docs/types/primitives/