Da Flow a JavaScript standard — Numio
Strisce Annotazioni di tipo Flow per produrre semplici JavaScript utilizzando il plugin flow-strip-types di Babel. Le importazioni di solo tipo e gli alias di tipo vengono rimossi e la pagina formatta quindi il risultato con Prettier.
Stai rimuovendo Flow da un progetto e desideri prima il semplice JavaScript, prima di decidere se passare a TypeScript.
Flow
JavaScript
Quando usarlo
- Stai rimuovendo Flow da un progetto e desideri prima il semplice JavaScript, prima di decidere se passare a TypeScript.
- Devi incollare uno snippet digitato Flow in una posizione che accetta solo JavaScript standard, come una console del browser o una codepen.
Come si usa
- Incolla il codice con annotazioni Flow (con o senza l'intestazione // @flow) nel pannello Flow.
- Il codice viene elaborato in un Web Worker locale: recast lo analizza con il parser Flow e Babel rimuove i tipi.
- Copia JavaScript dal pannello di output.
Flusso
// @flow
import type { Store } from './store';
import { createStore } from './store';
type State = { count: number };
export function first<T>(items: Array<T>): ?T {
return items.length ? items[0] : null;
}
const store: Store<State> = createStore(({ count: 0 }: State));
export default store;JavaScript
import { createStore } from "./store"
export function first(items) {
return items.length ? items[0] : null
}
const store = createStore({
count: 0,
})
export default storeDettagli e limiti
La conversione avviene localmente in un Web Worker del browser; l’input non viene caricato su un server. Al primo utilizzo il browser scarica il modulo di conversione necessario.
Vengono rimossi solo i tipi. Sintassi moderna come JSX, ?? o i campi della classe non vengono traspilati.
Il risultato viene riformattato con Prettier (virgolette doppie, senza punto e virgola), quindi lo stile originale non viene mantenuto e un cast di tipo come ({ count: 0 }: State) perde le sue parentesi extra.
Un // commento @flow allegato a una dichiarazione di tipo rimossa viene rimosso con essa.
FAQ
Mantiene JSX?
Sì. JSX viene analizzato e trasmesso senza modifiche, quindi è ancora necessaria una trasformazione JSX per eseguire il risultato.
Cosa succede alle istruzioni di tipo importato?
Vengono rimossi completamente. Le importazioni regolari rimangono invariate.
L'output necessita di Flow o Babel per essere eseguito?
Non è necessario alcun flusso. Se l'input utilizza JSX o una nuova sintassi, il runtime o il bundler devono comunque supportarlo.