2014-11-22 9 views
5

Sto giocando con il nuovo sistema di controllo del tipo di flusso di Facebook.Annotazioni del tipo di flusso e origine JavaScript valida

In Flow, meet Underscore sembra che cambiano il codice JavaScript

var root = this; 

in questo

var root: any = this; 

Ma questo non è più valida JavaScript, giusto? Capisco perché i file di interfaccia esterni siano utili, ma come aggiungere le annotazioni di tipo direttamente nelle sorgenti JavaScript valide?

In precedenza, compilatore Google Closure e altri progetti utilizzati nei commenti JS.

+0

Il flusso analizza un superset della sintassi JavaScript; il codice effettivo che finisce in esecuzione in un browser (o ovunque) è un semplice JavaScript. – Pointy

risposta

0

Ho perso Running Flow code dove si parla di aggiungere un passo di generazione per rimuovere le annotazioni di tipo.

È possibile utilizzare la JSX transform tool (parte degli strumenti REACT) per tradurre i vostri file in pianura JavaScript

ho trovato anche flow-typestrip che è alternativa.

Mi piacciono i file di interfaccia esterni per modulo, in quanto è possibile evitare di introdurre una fase di creazione.

3

A partire da Flow 0.4.0 è possibile inserire la sintassi del flusso nei commenti. Questo risolve il tuo problema. Così il vostro esempio sarà simile:

var root/*: any*/ = this; 

Questo si traduce in sintassi JavaScript valida e non v'è alcuna necessità di transpile codice.

Ulteriori dettagli possono essere trovati qui: http://flowtype.org/blog/2015/02/20/Flow-Comments.html

+0

Non c'è davvero alcun buon motivo per non scrivere tutte le annotazioni Flow come commenti. Trasforma il codice tipizzato dal flusso dalla terra di "compila a JavaScript" al semplice vecchio JavaScript che funziona da solo ovunque. –

1

Hai ragione, che il codice non è più valida javascript. Ciò significa che quando si utilizza Flow in someJavascriptFile.js, è necessario eseguire un programma che rimuove il codice di flusso da someJavascriptFile.js, che viene chiamato transpiling. Quale transpiler usare dipende da come stai usando javascript e probabilmente cambierà nel tempo, quindi non collegherò a nessuno.

È anche possibile includere i tipi di flusso in un commento, ad es. var name /*:string*/ = "Hello flow.", che è valido javascript, ma rende il codice più difficile da leggere a mio parere.

In teoria, i motori Javascript potrebbero un giorno supportare nativamente l'analisi del flusso, ma è molto lontano.

Problemi correlati