Quelqu'un peut-il expliquer la différence entre:
function foo(bar: ?string) {
console.log(bar);
}
et:
function foo(bar?: string) {
console.log(bar);
}
Quand utiliser l'un sur l'autre?
Fondamentalement
bar: ?string
accepte une chaîne, nulle ou nulle:
foo("test");
foo(null);
foo()
Tandis que
bar?: string
Accepte uniquement une chaîne ou un vide:
foo("test");
foo();
Comme passer null au lieu d'une chaîne est quelque peu insensé, il n'y a aucune différence réelle entre eux.
?string
(peut-être du type) signifie que la propriété bar
peut être string
ainsi que null
et void
.
bar?
signifie que cette propriété est facultative.
Plus d'informations: https://flow.org/en/docs/types/primitives/