跳到主要內容

Flow 很高興宣布元件語法,為 Flow 語言新增對 React 原生元件和勾子等功能的一流支援。這些功能為許多 React 規則帶來更好的使用體驗、表現力和靜態強制。

條件式類型允許您透過檢查輸入類型,在兩個不同的輸出類型之間選擇。

從 v0.201.0 開始,Flow 現在可以針對未使用的/浮動 Promise 進行檢查。未使用的 Promise 可能很危險,因為錯誤可能會未處理,而且程式碼可能無法按預期順序執行。這些通常是錯誤,而 Flow 完全可以對此發出警告。

區域類型推論讓 Flow 的推論行為更可靠且可預測,方法是適度增加 Flow 的註解需求,使其更接近產業標準,並利用越來越強且明確的類型化程式碼庫。

Flow 以寬鬆但又不安全的方式處理空物件字面 {}。這篇文章中說明的修正增加了安全性與可預測性,但需要使用不同的模式和行為。

Flow 發布了一條新的語言規則,用於在初始化時確定未註解變數的類型。除了這些新規則之外,還修復了幾個導致精煉無效的健全性錯誤。

我們將使用一個系統替換 Flow 目前的推論引擎,該系統的行為更可預測,並且可以在更本地化的層面進行推理。

Flow 列舉是一種選擇加入功能,允許您定義一組固定的常數,這些常數會建立自己的類型。

Flow 的索引存取類型是一種新的類型註解語法,允許您從物件、陣列或元組類型取得屬性的類型。

改進 Flow 中「this」打字的健全性,包括在函式和方法上註解「this」的能力。

Flow 類型優先模式已推出!它透過充分打字的模組邊界來發揮 Flow 的潛力。在我們的最新部落格文章中閱讀更多資訊。

物件展開的修正會揭露你的程式碼庫中的錯誤。進一步了解常見錯誤以及如何修正它們。

升級自 0.84.0 有問題嗎?了解 Flow 團隊如何在 Facebook 升級 Flow!

我們對 React 模型做了一些重大變更,以更好地建模新的 React 元件。讓我們來談談 React.AbstractComponent!

Flow 將從 0.85.0 開始要求更多註解。在我們最新的部落格文章中,了解如何處理這些錯誤。

在過去的一年中,Flow 團隊一直在慢慢稽核和改善類型檢查器產生的所有可能的錯誤訊息。在 Flow 0.66 中,我們很興奮地宣布一種新的錯誤訊息格式,旨在減少你閱讀和修正 Flow 找到的每個錯誤所花費的時間。

Flow 對 React 的第一個版本支援是 React.createClass() 的神奇實作。從那時起,React 已大幅演進。現在是重新思考 Flow 如何建構 React 模型的時候了。

Flow 的類型資訊用途廣泛,不只用於證明你的程式正確無誤。介紹 Flow 程式碼檢查器。

你是否曾經希望可以對使用者隱藏你的實作細節?找出不透明類型別名如何完成這項工作!

嚴格檢查函式呼叫的參數個數

Flow 最初的目標之一是能夠理解慣用的 JavaScript。在 JavaScript 中,你可以使用比函式預期的參數更多的參數來呼叫函式。因此,Flow 從未抱怨使用多餘參數呼叫函式。

我們正在改變這個行為。

介紹 Flow-Typed

擁有高品質且由社群驅動的函式庫定義(「libdefs」)對於在 Flow 中擁有絕佳體驗非常重要。今天,我們介紹flow-typed:一個儲存庫CLI 工具,代表建立、分享和散布 Flow libdefs 的新工作流程的第一部分。

這個專案的目標是建立一個 libdefs 生態系統,讓 Flow 的類型推論發揮作用,並與 Flow 的任務一致:從真實世界的 JavaScript 中萃取精確且準確的類型。我們從類似 TypeScript 的 DefinitelyTyped 努力中學到很多,我們希望將我們學到的部分經驗帶入 Flow 生態系統。

以下是這個專案的一些目標

屬性變異和其他即將推出的變更

Flow 的下一個版本 0.34 將包含一些物件類型的重大變更

  • 屬性變異性,
  • 預設不變的字典類型,
  • 預設共變的方法類型,
  • 以及更靈活的 getter 和 setter。

Windows 支援已到來!

我們很興奮地宣布 Flow 現在已正式在 64 位元 Windows 上推出!從 Flow v0.30.0 開始,我們將在每個版本中發布 Windows 二進位檔。你可以直接從 GitHub 發行頁面 以 .zip 檔案下載 Windows 二進位檔,或使用 flow-bin npm 套件 安裝。試試看,並 回報你遇到的任何問題

![Windows 支援 GIF]({{ site.baseurl }}/static/windows.gif)

讓 Flow 在 Windows 上執行並不容易,這要歸功於 GrégoireÇagdasFabrice 來自 OCamlPro 的辛勤工作。

聯集和交集的新實作

摘要

在 Flow 0.28 之前,聯集/交集類型的實作有嚴重的錯誤,而且是 [導致][gh1759] [根源][gh1664] [原因][gh1663] [造成][gh1462] [許多][gh1455] [奇怪][gh1371] [行為][gh1349] 你過去可能在 Flow 中遇到的問題。這些錯誤現在已在 [0.28 中的 diff 著陸][fotu] 中解決。

版本 0.21.0

昨天我們部署了 Flow v0.21.0!一如往常,我們在 變更日誌 中列出了最有趣的變更。然而,由於我正在飛機上且無法入睡,我想深入探討一些變更會很有趣!希望這篇部落格文章有趣且易讀!

JSX 內建函式

如果您正在撰寫 JSX,它可能是您自己的 React 組件和一些內部函數的組合。例如,您可能會撰寫

render() {
return <div><FluffyBunny name="Fifi" /></div>;
}

在此範例中,FluffyBunny 是您撰寫的 React 組件,而 div 是 JSX 內部函數。React 和 Flow 會假設小寫的 JSX 元素是內部函數。在 Flow v0.21.0 之前,Flow 會忽略內部函數並給予它們 any 類型。這表示 Flow 讓您在 JSX 內部函數上設定任何屬性。Flow v0.21.0 預設會執行與 v0.20.0 相同的動作,不過現在您也可以設定 Flow 來正確輸入您的 JSX 內部函數!

版本 0.19.0

Flow v0.19.0 已於今日部署!它有許多變更,變更記錄 對其進行了摘要。不過,變更記錄可能有點簡潔,因此以下針對部分變更提供較長的說明。希望對您有幫助!

@noflow

Flow 預設為加入選項(您將 @flow 加入檔案)。不過,我們注意到有時人們會將 Flow 注解加入缺少 @flow 的檔案。這些人通常沒有注意到 Flow 忽略了該檔案。因此,我們決定不再允許在非 Flow 檔案中使用 Flow 語法。這可以透過將 @flow@noflow 加入檔案來輕鬆修正。前者會讓檔案成為 Flow 檔案。後者會告訴 Flow 完全忽略該檔案。

宣告檔案

現在會特別處理以 .flow 結尾的檔案。它們是模組的首選提供者。也就是說,如果 foo.jsfoo.js.flow 都存在,則當您撰寫 import Foo from './foo' 時,Flow 會使用從 foo.js.flow 輸出的類型,而不是 foo.js

我們想像人們會使用 .flow 檔案的兩種主要方式。

使用 Flow 輸入產生器

Flow 0.14.0 包含對產生器函數的支援。產生器函數為 JavaScript 程式提供獨特的能力:暫停和恢復執行。這種控制為非同步/等待鋪路,這是一個 Flow 已支援的即將推出的功能

版本 0.17.0

我們今日發布 Flow v0.17.0!您可能首先會注意到我們變更了在命令列顯示錯誤的方式。新的錯誤如下所示

![新的錯誤格式]({{ site.baseurl }}/static/new_error_format_v0_17_0.png)

希望這能幫助我們的命令列使用者了解許多錯誤,而無需參閱他們的原始碼。我們將繼續反覆使用此格式,因此請告訴我們您喜歡和不喜歡的地方!感謝 @frantic 建立此功能!

此版本中還有許多其他功能和修正!前往我們的 版本 以取得完整清單!

版本 0.16.0

星期五,我們發布了 Flow v0.16.0!我們有一些主要的效能改進,我們希望將其納入版本中,加上 let/const 支援已準備就緒(再次感謝 @samwgoldman)!

一如往常,變更日誌 最能總結重大變更。

版本 0.15.0

今天,我們發布了 Flow v0.15.0!上個月發生了很多變化,我們很興奮能將所有貢獻者的辛勤工作呈現在大家面前!非常感謝為此版本做出貢獻的每個人!

查看 變更日誌 以查看新功能。