Flow 很高興宣布元件語法,為 Flow 語言新增對 React 原生元件和勾子等功能的一流支援。這些功能為許多 React 規則帶來更好的使用體驗、表現力和靜態強制。
宣佈條件式類型
條件式類型允許您透過檢查輸入類型,在兩個不同的輸出類型之間選擇。
宣佈 5 個新的 Flow 元組類型功能
標籤元組元素、唯讀元組、選用元組元素、元組展開等。
Flow 現在可以偵測未使用的 Promise
從 v0.201.0 開始,Flow 現在可以針對未使用的/浮動 Promise 進行檢查。未使用的 Promise 可能很危險,因為錯誤可能會未處理,而且程式碼可能無法按預期順序執行。這些通常是錯誤,而 Flow 完全可以對此發出警告。
宣佈部分和必要的 Flow 實用程式類型 + 捕捉註解
從 Flow 版本 0.201 開始,使用 Partial<ObjType>
(取代不安全的 $Shape
)讓物件類型的所有欄位都變成選用,並使用 Required<ObjType>
讓物件類型的選用欄位變成必要。
預設為精確物件類型,預設為精確物件類型
我們在 5 年前宣佈了一項計畫,最終將精確物件類型設為預設。我們現在正進行這項計畫。
Flow 的區域類型推論
區域類型推論讓 Flow 的推論行為更可靠且可預測,方法是適度增加 Flow 的註解需求,使其更接近產業標準,並利用越來越強且明確的類型化程式碼庫。
改善 Flow 中空物件的處理方式
Flow 以寬鬆但又不安全的方式處理空物件字面 {}。這篇文章中說明的修正增加了安全性與可預測性,但需要使用不同的模式和行為。
要求在 Flow 中為函式和類別加上更多註解
Flow 現在需要為函式和類別加上更多註解。
新的 Flow 語言規則:約束寫入
Flow 發布了一條新的語言規則,用於在初始化時確定未註解變數的類型。除了這些新規則之外,還修復了幾個導致精煉無效的健全性錯誤。
推出:Flow 的本地類型推論
我們將使用一個系統替換 Flow 目前的推論引擎,該系統的行為更可預測,並且可以在更本地化的層面進行推理。
推出 Flow 列舉
Flow 列舉是一種選擇加入功能,允許您定義一組固定的常數,這些常數會建立自己的類型。
TypeScript 列舉與 Flow 列舉
TypeScript 和 Flow 列舉功能的比較。
推出 Flow 索引存取類型
Flow 的索引存取類型是一種新的類型註解語法,允許您從物件、陣列或元組類型取得屬性的類型。
Flow 中「this」的健全打字
改進 Flow 中「this」打字的健全性,包括在函式和方法上註解「this」的能力。
Flow 的方向和開源參與的說明
Flow 的方向和開源參與的更新。
類型優先是 Flow 中唯一支援的模式(2021 年 1 月)
類型優先將在 v0.143(2021 年 1 月中旬)中成為 Flow 中唯一的模式。
Flow 改進了對泛型類型的處理
Flow 已透過禁止先前允許的不安全行為和釐清錯誤訊息來改善其對泛型類型的處理。
類型優先:Flow 的可擴充新架構
Flow 類型優先模式已推出!它透過充分打字的模組邊界來發揮 Flow 的潛力。在我們的最新部落格文章中閱讀更多資訊。
讓 Flow 錯誤抑制更具體
我們正在改進 Flow 錯誤抑制,以便它們不會意外隱藏錯誤。
我們在 2020 年建立的內容
瞭解 Flow 將如何在 2020 年進行改進。
2019 年 Flow 的改進
回顧我們在 2019 年對 Flow 所做的改進。
如何升級到預設為精確的物件類型語法
物件類型將預設為精確。閱讀這篇文章,了解如何讓你的程式碼準備好!
展開:常見錯誤和修正
物件展開的修正會揭露你的程式碼庫中的錯誤。進一步了解常見錯誤以及如何修正它們。
在你的 IDE 中即時顯示 Flow 錯誤
在輸入時即時顯示錯誤,讓 Flow 在你的 IDE 中感覺更快!
即將推出:物件展開的變更
Flow 建模物件展開的方式即將變更!在此篇文章中進一步了解。
升級 Flow 程式碼庫
升級自 0.84.0 有問題嗎?了解 Flow 團隊如何在 Facebook 升級 Flow!
更具回應性的 Flow
Flow 0.92 改善了 Flow 開發人員體驗。
Flow 團隊一直在做什麼
看看 Flow 在 2018 年做了什麼。
支援 React.forwardRef 及更多
我們對 React 模型做了一些重大變更,以更好地建模新的 React 元件。讓我們來談談 React.AbstractComponent!
要求必要的註解
Flow 將從 0.85.0 開始要求更多註解。在我們最新的部落格文章中,了解如何處理這些錯誤。
在路線圖上:預設為精確的物件
我們正在將物件類型變更為預設為精確。我們將發布 codemod 以協助你升級。
條件式中未知屬性存取的新 Flow 錯誤
TL;DR:從 0.68.0 開始,當你在條件式中存取未知屬性時,Flow 現在會產生錯誤。
針對 JavaScript 生態系統的更佳 Flow 錯誤訊息
在過去的一年中,Flow 團隊一直在慢慢稽核和改善類型檢查器產生的所有可能的錯誤訊息。在 Flow 0.66 中,我們很興奮地宣布一種新的錯誤訊息格式,旨在減少你閱讀和修正 Flow 找到的每個錯誤所花費的時間。
使用 Flow 在 Recompose 中輸入高階元件
一個月前,Recompose 發布了官方 Flow 函式庫定義。這些定義已經醞釀許久,考量到原始的 PR 是由 @GiulioCanti 在一年前建立的。
使用 Flow 的不透明類型別名定義私有物件屬性
在過去幾週,JavaScript 中的私有類別欄位 提案已進入第 3 階段。這將成為一個很棒的方式,讓你可以對類別使用者隱藏實作細節。然而,如果你偏好更具功能性的風格,將自己鎖定在 OOP 程式設計風格中並非總是理想的。讓我們來談談如何使用 Flow 的不透明類型別名,在任何物件類型上取得私有屬性。
Flow 中對 React 的更佳支援
Flow 對 React 的第一個版本支援是 React.createClass()
的神奇實作。從那時起,React 已大幅演進。現在是重新思考 Flow 如何建構 React 模型的時候了。
Flow 中的程式碼檢查
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、Çagdas 和 Fabrice 來自 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.js
和 foo.js.flow
都存在,則當您撰寫 import Foo from './foo'
時,Flow 會使用從 foo.js.flow
輸出的類型,而不是 foo.js
。
我們想像人們會使用 .flow
檔案的兩種主要方式。
使用 Flow 輸入產生器
Flow 0.14.0 包含對產生器函數的支援。產生器函數為 JavaScript 程式提供獨特的能力:暫停和恢復執行。這種控制為非同步/等待鋪路,這是一個 Flow 已支援的即將推出的功能。
版本 0.17.0
版本 0.16.0
星期五,我們發布了 Flow v0.16.0!我們有一些主要的效能改進,我們希望將其納入版本中,加上 let/const 支援已準備就緒(再次感謝 @samwgoldman)!
一如往常,變更日誌 最能總結重大變更。
版本 0.15.0
今天,我們發布了 Flow v0.15.0!上個月發生了很多變化,我們很興奮能將所有貢獻者的辛勤工作呈現在大家面前!非常感謝為此版本做出貢獻的每個人!
查看 變更日誌 以查看新功能。