Flow 很高兴地宣布组件语法,为 Flow 语言添加了对 React 原语(如组件和钩子)的一流支持。这些特性为许多 React 规则带来了更好的可用性、表达性和静态强制。
宣布条件类型
条件类型允许您通过检查输入类型在两种不同的输出类型之间进行选择。
宣布 5 个新的 Flow 元组类型特性
带标签的元组元素、只读元组、可选元组元素、元组展开等等。
Flow 现在可以检测未使用的 Promise
从 v0.201.0 开始,Flow 现在可以针对未使用的/浮动 Promise 进行 lint。未使用的 Promise 可能很危险,因为错误可能无法处理,并且代码可能不会按预期顺序执行。它们通常是 Flow 可以完美地提醒您的错误。
宣布 Partial & Required Flow 实用类型 + 捕获注释
从 Flow 版本 0.201 开始,使用 Partial<ObjType>
使对象类型的字段全部可选(使用它代替不安全的 $Shape
),并使用 Required<ObjType>
使对象类型的可选字段变为必需。
默认情况下,默认情况下为精确对象类型
我们五年前宣布了一项计划,最终将精确对象类型作为默认类型。我们现在正在执行这项计划。
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 方向和开源参与的更新。
Types-First 是 Flow 中唯一支持的模式(2021 年 1 月)
Types-First 将在 v0.143(2021 年 1 月中旬)中成为 Flow 中的唯一模式。
Flow 改进的泛型类型处理
Flow 通过禁止以前允许的不安全行为并澄清错误消息,改进了对泛型类型的处理。
Types-First:Flow 的可扩展新架构
Flow Types-First 模式已发布!它通过利用完全类型的模块边界来释放 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!
要求必需注释
从 0.85.0 开始,Flow 将要求更多注释。在我们的最新博客文章中了解如何处理这些错误。
路线图上:默认情况下为精确对象
我们正在将对象类型更改为默认情况下为精确类型。我们将发布代码修改器来帮助您升级。
在条件语句中访问未知属性时的新的 Flow 错误
TL;DR:从 0.68.0 开始,当您在条件语句中访问未知属性时,Flow 现在将报错。
针对 JavaScript 生态系统的更好的 Flow 错误消息
在过去的一年里,Flow 团队一直在慢慢审核和改进类型检查器生成的所有可能的错误消息。在 Flow 0.66 中,我们很高兴地宣布一种新的错误消息格式,旨在缩短您阅读和修复 Flow 发现的每个错误所需的时间。
在 Recompose 中使用 Flow 对高阶组件进行类型化
一个月前,Recompose 发布了官方 Flow 库定义。考虑到 @GiulioCanti 一年前创建了最初的 PR,这些定义已经酝酿已久。
使用 Flow 的不透明类型别名创建私有对象属性
在过去几周里,关于 JavaScript 中的私有类字段 的提案已达到第 3 阶段。这将成为将实现细节隐藏在类用户之外的好方法。但是,如果您更喜欢更具功能性的风格,那么将自己锁定在面向对象的编程风格中并不总是理想的。让我们谈谈如何使用 Flow 的 不透明类型别名 在任何对象类型上获取私有属性。
对 Flow 中的 React 提供更好的支持
Flow 对 React 的第一个版本是对 React.createClass()
的神奇实现。从那时起,React 已经发生了重大变化。现在是重新思考 Flow 如何模拟 React 的时候了。
Flow 中的 lint
Flow 的类型信息不仅对证明您的程序是正确的有用。介绍 Flow linter。
不透明类型别名
您是否曾经希望能够将实现细节隐藏在用户之外?了解不透明类型别名如何完成这项工作!
严格检查函数调用元数
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 版本页面 下载 Windows 二进制文件(以 .zip 文件形式),也可以使用 flow-bin npm 包 安装它。试一试,并 报告您遇到的任何问题!

让 Flow 在 Windows 上运行并不容易,这得益于 Grégoire、Çagdas 和 Fabrice(来自 OCamlPro)的辛勤工作。
联合和交集的新实现
摘要
在 Flow 0.28 之前,联合/交集类型的实现存在严重错误,并且[the][gh1759] [root][gh1664] [cause][gh1663] [of][gh1462] [a][gh1455] [lot][gh1371] [of][gh1349] [weird][gh842] [behaviors][gh815]你可能在过去使用 Flow 时遇到过这些错误。这些错误现在已在[a diff landing in 0.28][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 程序提供了独特的能力:暂停和恢复执行的能力。这种控制方式为 async/await 铺平了道路,async/await 是一个 即将推出的功能,Flow 已经支持它。
版本 0.17.0
版本 0.16.0
上周五我们发布了 Flow v0.16.0!我们有一些主要的性能改进,我们希望将其发布,此外 let/const 支持也已准备就绪(再次感谢 @samwgoldman)!
与往常一样,变更日志 最适合总结重大更改。
版本 0.15.0
今天我们发布了 Flow v0.15.0!在过去的一个月里发生了很多变化,我们很高兴将所有贡献者的辛勤工作呈现在大家面前!衷心感谢所有为此次发布做出贡献的人!
查看 变更日志 以了解新功能。