2016-05-16 13 views
6

In un GitHub project di recente ho visto questa dichiarazione di funzione "() => vuoto?":Che cosa significa questo punto interrogativo nel flusso:

function configureStore(onComplete: ?() => void) { 

Che cosa questo punto di domanda è di circa?

Immagino che il parametro onComplete sia chiamato, ricevendo chiamate di funzione. E il punto interrogativo sta affermando che questo parametro potrebbe essere opzionale e verrà impostato su "void", il che significherebbe lo stesso come un puntatore nullo/nulla che significa "nessuna chiusura" qui assegnato.

Ho ragione?

+0

No; questo è un tipo – SLaks

+0

Puoi spiegarmi un po 'di più per me? (o invia un link ai documenti, io già cerco su google ma non ho trovato nulla) – delete

+1

Immagino che sia a flusso o dattiloscritto. http://flowtype.org/, https://www.typescriptlang.org/ –

risposta

16

Quasi.

() => void è l'annotazione di Flow per una funzione che non restituisce nulla (undefined, alias void 0).

Il punto interrogativo iniziale in ?MyType è il modo in cui Flow esprime un tipo nullable.

Quindi in questo caso configureStore accetta un argomento chiamato onComplete che deve essere nullo o una funzione che non restituisce nulla.

Il flusso non aggiunge un valore predefinito per onComplete o lo costringe in alcun modo perché diversamente dal dattiloscritto, Flow non genera alcun nuovo codice JS. In fase di runtime, tutte le annotazioni Flow vengono eliminate per ottenere vanilla JS, e questo è quanto.