javascript - 什么是“类型优先”的流架构?
问题描述
Flow 团队的一篇博客文章描述了 Flow 的“重新架构”,称为“类型优先”。据我所知,唯一的描述是来自博客文章的引用:
“......它利用文件边界处的完整类型注释来执行更好(更可并行化和更少冗余)的单独编译。”
在任何地方都有关于这个的更多细节吗?具体来说,我想知道这些完整的注释是什么:源代码和声明文件的新限制是什么?
例如,这是否允许?
import { func } from "./other-module";
export const myNumber = func(num1, num2);
这在 TypeScript 中是有问题的,因为在myNumber
不知道func
. Flow 的“类型优先”重新架构是否需要用户编写:
import { func } from "./other-module";
export const myNumber: number = func(num1, num2);
这只是我的一个具体问题。我正在寻找更多信息和一个文档链接,该文档解释了重新架构的所有已知含义。
解决方案
这听起来真的很华而不实,也许它在引擎盖下。但实际上这很简单。在您的代码片段中,您是绝对正确的,这几乎就是这样。
导出前必须有明确定义的类型
虽然不一定在您导出之前。以下也有效。
const TestComponent = (): React.Node => {};
export default TestComponent;
它增加了一点开销,但好处是:
- 性能的改进,因为 flow 不需要扫描所有依赖项就可以为您提供健全性检查
- 更可靠的代码,因为流程在模块边界内运行,因此您不会遇到由深度嵌套的依赖关系引起的流程错误。
他们还发布了一篇新的博客文章,该文章进一步介绍了类型,因为现在类型首次正式发布。 https://medium.com/flow-type/types-first-a-scalable-new-architecture-for-flow-3d8c7ba1d4eb
更新类型优先架构现已记录在案。
推荐阅读
- sails.js - How to fix error caused by userconfig probably by sails?
- bash - How can I invoke both BASH and CSH shells in a same script
- php - 使用php从MySQL中选择并打印数据,不起作用
- c# - 具有 2 个时间数据的 LinkedList
- html - CSS文件未在浏览器中更新
- android - Android资产,我如何从子文件夹中读取文件?
- amazon-web-services - 我应该做很多较小的请求,还是使用 s3 做更少但更大的请求来传递数据
- python-3.x - 在 xlib 上使用 ctypes 时出现分段错误
- node.js - 如何将 node.js express 服务器转换为 AWS lambda?
- php - 如何修复 PHP 中的未定义变量错误