2014-11-22 5 views
5

Ich spiele mit dem neuen Flow Type-Prüfsystem von Facebook.Anmerkungen zum Flow-Typ und gültige JavaScript-Quelle

In Flow, meet Underscore scheint es, dass sie mit diesem JavaScript-Code

var root = this; 

in diesen

var root: any = this; 

Aber das ist nicht mehr gültig JavaScript, nicht wahr? Ändern Ich verstehe, warum externe Schnittstellendateien nützlich sind, aber wie werden Typanmerkungen direkt in gültige JavaScript-Quellen eingefügt?

Zuvor wurden Google Closure-Compiler und andere Projekte für JS-Kommentare verwendet.

+0

Flow analysiert eine Obermenge von JavaScript-Syntax; Der eigentliche Code, der in einem Browser (oder wo auch immer) ausgeführt wird, ist JavaScript. – Pointy

Antwort

0

Ich verpasste Running Flow code, wo es das Hinzufügen eines Build-Schritts zum Entfernen von Typ Anmerkungen diskutiert.

Sie können das JSX transform tool (Teil der Werkzeuge Reagieren) zu übersetzen Ihre Dateien auf Ebene JavaScript

Ich fand auch flow-typestrip die Alternative ist.

Ich mag externe Interface-Dateien pro Modul besser, da Sie vermeiden können, einen Build-Schritt einzuführen.

3

Ab Flow 0.4.0 können Sie die Flow-Syntax in die Kommentare einfügen. Dies löst Ihr Problem. So Ihr Beispiel würde wie folgt aussehen:

var root/*: any*/ = this; 

Dies führt zu einer gültigen JavaScript-Syntax, und es gibt keine Notwendigkeit, den Code transpile.

Weitere Details finden Sie hier: http://flowtype.org/blog/2015/02/20/Flow-Comments.html

+0

Es gibt wirklich keinen guten Grund, nicht alle Flussanmerkungen als Kommentare zu schreiben. Es wandelt Fließcode aus dem Land von "kompiliert in JavaScript" in einfaches JavaScript um, das überall funktioniert. –

1

Du hast Recht, dass der Code nicht mehr gültig ist Javascript. Das bedeutet, wenn Sie Flow in javascriptFile.js verwenden, müssen Sie ein Programm ausführen, das den Flow-Code aus javascriptFile.js entfernt, was als "transpiling" bezeichnet wird. Welchen transpiler zu verwenden ist, hängt davon ab, wie Sie JavaScript ausführen, und wird sich wahrscheinlich im Laufe der Zeit ändern, so dass ich keine Verbindung zu irgendwelchen herstellen werde.

Sie können die Bewegungsarten auch in einen Kommentar einfügen, z. var name /*:string*/ = "Hello flow.", die ist Javascript gültig, aber macht den Code schwieriger zu lesen, meiner Meinung nach.

In der Theorie könnten Javascript-Engines eines Tages das Flow-Parsing nativ unterstützen, aber das ist noch ein langer Weg.

Verwandte Themen