web-dev-qa-db-fra.com

point d'interrogation de type de flux avant ou après param?

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?

18
Vic

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.

25
Jonas Wilms

?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/

12
kind user