Flow in JavaScript umwandeln — Numio
Entfernt Flow-Typannotationen mit Babels Plugin flow-strip-types und erzeugt reines JavaScript. Reine Typ-Imports und Typaliase werden entfernt, und die Seite formatiert das Ergebnis anschließend mit Prettier.
Du entfernst Flow aus einem Projekt und willst zuerst das reine JavaScript, bevor du entscheidest, ob du zu TypeScript wechselst.
Flow
JavaScript
Wann sie hilft
- Du entfernst Flow aus einem Projekt und willst zuerst das reine JavaScript, bevor du entscheidest, ob du zu TypeScript wechselst.
- Du musst ein Flow-typisiertes Snippet an einer Stelle einfügen, die nur Standard-JavaScript akzeptiert, etwa in einer Browser-Konsole oder einem Codepen.
Anwendung
- Füge Flow-annotierten Code (mit oder ohne // @flow-Header) in das Panel Flow ein.
- Der Code wird an /api/flow-to-javascript gesendet, wo recast ihn mit dem Flow-Parser parst und Babel die Typen entfernt.
- Kopiere das JavaScript aus dem Ausgabe-Panel.
Flow
// @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 storeDetails und Einschränkungen
Die Seite sendet deine Eingabe zur Konvertierung an eine Server-Route (/api/flow-to-javascript); sie wird nicht nur im Browser verarbeitet. Next.js-API-Routen akzeptieren standardmäßig Request-Bodys bis 1 MB.
Nur Typen werden entfernt. Moderne Syntax wie JSX, ?? oder Klassenfelder wird nicht transpiliert.
Das Ergebnis wird mit Prettier neu formatiert (doppelte Anführungszeichen, keine Semikolons); der ursprüngliche Stil bleibt also nicht erhalten, und ein Type-Cast wie ({ count: 0 }: State) verliert seine zusätzlichen Klammern.
Ein // @flow-Kommentar, der an einer entfernten Typdeklaration hängt, wird mit ihr entfernt.
FAQ
Bleibt JSX erhalten?
Ja. JSX wird geparst und unverändert durchgereicht; zum Ausführen des Ergebnisses brauchst du also weiterhin eine JSX-Transformation.
Was passiert mit import type-Anweisungen?
Sie werden vollständig entfernt. Normale Imports bleiben unverändert.
Braucht die Ausgabe Flow oder Babel zum Ausführen?
Flow wird nicht benötigt. Verwendet die Eingabe JSX oder neue Syntax, muss deine Laufzeitumgebung oder dein Bundler diese weiterhin unterstützen.