2014-11-22 40 views
5

我在玩Facebook的新流量類型檢查系統。流量類型註釋和有效的JavaScript源代碼

Flow, meet Underscore看來他們改變這段JavaScript代碼

var root = this; 

這個

var root: any = this; 

但是,這已不再是有效的JavaScript,對不對?我明白爲什麼外部接口文件會有用,但是如何將類型註釋直接添加到有效的JavaScript源代碼中?

此前,谷歌關閉編譯器和其他項目上使用JS評論。

+0

Flow分析JavaScript語法的超集;最終在瀏覽器(或任何地方)運行的實際代碼是純JavaScript。 – Pointy 2014-11-22 17:48:15

回答

0

我錯過了Running Flow code討論添加構建步驟以刪除類型註釋。

可以使用JSX transform tool(的陣營工具的一部分)來 您的文件轉換成普通的JavaScript

我還發現flow-typestrip這是另類。

我更喜歡每個模塊的外部接口文件,因爲您可以避免引入構建步驟。

3

從Flow 0.4.0開始,您可以將Flow語法放入註釋中。這解決了你的問題。因此,您的示例如下所示:

var root/*: any*/ = this; 

這會生成有效的JavaScript語法,並且不需要傳輸代碼。

進一步的細節可以在這裏找到: http://flowtype.org/blog/2015/02/20/Flow-Comments.html

+0

確實沒有理由不將所有流注釋寫爲註釋。它將流編碼代碼從「編譯爲JavaScript」轉變爲可在任何地方使用的普通舊JavaScript。 – 2016-12-16 14:06:42

1

你說得對,該代碼不再有效的JavaScript。這意味着當您在某個JavaScriptFile.js中使用Flow時,必須執行一個程序,該程序從一些JavascriptFile.js中刪除流程代碼,這稱爲轉譯。要使用哪個編譯器取決於你如何運行javascript,並且可能會隨時間而改變,所以我不會鏈接到任何編譯器。

您還可以將流類型包裝到註釋中,例如。 var name /*:string*/ = "Hello flow.",其中是有效的javascript,但使我的看法難以閱讀的代碼。

理論上,JavaScript引擎可能有一天本機支持Flow解析,但這是一個很長的路要走。