什么是“类型优先”的 Flow 架构?

Max*_*ber 5 javascript flowtype

一个博客帖子由流动小组描述了“重新架构”的流程叫“类型优先”。据我所知,唯一的描述是来自博客文章的引用:

“...它利用文件边界处的完整类型注释来执行更好(更可并行化和更少冗余)的单独编译。”

有没有关于这个的更多细节?具体来说,我想知道这些完整的注释是什么:对源代码和声明文件的新限制是什么?

例如,这是否允许?

import { func } from "./other-module";
export const myNumber = func(num1, num2);
Run Code Online (Sandbox Code Playgroud)

这在 TypeScript 中是有问题的,因为myNumber如果不知道func. Flow 的“类型优先”重新架构是否需要用户编写:

import { func } from "./other-module";
export const myNumber: number = func(num1, num2);
Run Code Online (Sandbox Code Playgroud)

这只是我的一个具体问题。我正在寻找的是更多信息和指向解释重新架构的所有已知影响的文档的链接。

Bri*_*hen 8

这听起来真的很华丽,也许它是在引擎盖下。但实际上它很简单。在您的代码片段中,您是绝对正确的,它几乎就是这个意思。

在导出之前,您必须具有明确定义的类型

虽然不一定就在您导出之前。以下也有效。

const TestComponent = (): React.Node => {};

export default TestComponent;
Run Code Online (Sandbox Code Playgroud)

它增加了一点开销,但好处是:

  • 性能改进,因为流不需要扫描所有依赖项,然后才能为您提供健全性检查
  • 更可靠的代码,因为流程在模块边界内运行,因此您不会遇到由深度嵌套依赖项引起的流程错误。

他们还发布了一篇新的博客文章,深入探讨了这一点,因为 types first 现已正式发布。 https://medium.com/flow-type/types-first-a-scalable-new-architecture-for-flow-3d8c7ba1d4eb

更新类型优先架构现已记录在案