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.