2014-11-22 10 views
5

Gram z nowym systemem sprawdzania przepływu typu Facebook.Adnotacje typu przepływu i poprawne źródło kodu JavaScript

W Flow, meet Underscore wydaje się, że zmiany tego kodu JavaScript

var root = this; 

w tym

var root: any = this; 

Ale to nieważne JavaScript, prawda? Rozumiem, dlaczego zewnętrzne pliki interfejsu byłyby użyteczne, ale w jaki sposób adnotacje typu są dodawane bezpośrednio do prawidłowych źródeł JavaScript?

Poprzednio kompilator Google Closure i inne projekty używane w komentarzach JS.

+0

Flow analizuje nadzbiór składni JavaScript; rzeczywisty kod, który kończy się w przeglądarce (lub gdziekolwiek) jest zwykłym kodem JavaScript. – Pointy

Odpowiedz

0

Brakowało mi Running Flow code, gdzie omówiono dodawanie kroku kompilacji w celu usunięcia adnotacji typu.

Można użyć JSX transform tool (część narzędzi reagować) na tłumaczyć pliki do zwykłego JavaScript

Znalazłem również flow-typestrip który jest alternatywą.

Bardziej lubię zewnętrzne pliki interfejsu na moduł, ponieważ można uniknąć wprowadzania kroku kompilacji.

3

Od wersji Flow 0.4.0 można wstawiać składnię Flow do komentarzy. To rozwiązuje twój problem. Twój przykład będzie wyglądał następująco:

var root/*: any*/ = this; 

To powoduje, że składnia JavaScript jest poprawna i nie ma potrzeby zmiany jej kodu.

Dalsze szczegóły można znaleźć tutaj: http://flowtype.org/blog/2015/02/20/Flow-Comments.html

+0

Naprawdę nie ma żadnego powodu, aby nie zapisywać wszystkich adnotacji Flow jako komentarzy. Przekształca on kod typu flow z kręgu "kompilacji na JavaScript" do zwykłego kodu JavaScript, który działa w dowolnym miejscu. –

1

Masz rację, że kod nie jest już ważny JavaScript. Oznacza to, że gdy używasz Flow w jakimś pliku JavascriptFile.js, musisz wykonać program, który usuwa kod Flow z plikuJavascriptFile.js, który nazywa się transpilingiem. Który transpiler do użycia zależy od tego, w jaki sposób uruchamiasz javascript i prawdopodobnie zmieni się z upływem czasu, więc nie będę łączył się z żadnym.

Można również zawrzeć typy przepływu w komentarzu, np. var name /*:string*/ = "Hello flow.", który jest jest poprawny javascript, ale czyni kod trudniejszym do odczytania w mojej opinii.

Teoretycznie silniki JavaScript mogą pewnego dnia natywnie obsługiwać analizowanie przepływu, ale jest to bardzo odległe.

Powiązane problemy