问题标签 [flowtype]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Reacts `propTypes` 和 `defaultProps` 应该和 Flowtype 一起使用,还是 Flowtype 足够全面?
考虑一个简单的例子,例如:
在构造函数中,我可以定义这样的东西来实现(我认为)同样的事情:
第二个示例仅使用 Flowtype。使用 Reacts PropTypes 和 DefaultProps 有优势吗?或者我可以在使用 FlowType 时完全放弃它们吗?
reactjs - Flow(React Native)给我使用'this.state'的错误
每当我尝试this.state
在我的代码中使用时,Flow 都会给我以下错误:
对象字面量:此类型与 undefined 不兼容。您是否忘记声明
State
标识符的类型参数Component
?:
这是有问题的代码(尽管它也发生在其他地方):
任何帮助将不胜感激 =)
javascript - React - 使用 TypeScript 与 Flow 对比?
我目前正在学习 React,我认为我非常了解它。然而,关于开发健壮的 React 应用程序,有一件事情一直困扰着我——开发人员使用哪些工具来进行静态类型检查?
我真的很喜欢 TypeScript。我认为它大大减少了开发 JavaScript 应用程序的痛苦,这要归功于类型检查和其他简洁的功能。Visual Studio Code 还提供了非常好的代码完成功能。而且我知道我可以通过使用 typings + DenifitelyTyped 使其与React一起使用。
问题是,关于使用 React + TypeScript 的教程并不多。似乎也没有很多关于使用这个组合进行开发的文章。另一方面,很多人似乎都在使用Flow,这是一个由 Facebook 支持的项目(我猜他们也使用它)。
我设法在 Reddit上找到了关于采用 React + TypeScript / React + Flow 方式的优缺点的讨论。然而,对我来说,它似乎已经过时了,因为它现在大约有 10 个月大了。我认为从那以后发生了很多变化。
我还找到了两篇关于使用React + Flow和React + TypeScript的文章。作者陈述了他在使用这两个选项时遇到的一些问题,并得出结论认为 TypeScript 是“目前最好的选择”(2015 年 11 月),特别是因为 Flow 项目存在许多问题并且从 Facebook 收到的开发人员活动很少。他还提到它与 Babel 不兼容?
所以,我想问题是:使用 React + TypeScript 组合是否安全,或者我会遇到一些困难?流量呢?我应该检查其他一些类似的工具吗?您会推荐哪种方法?
2017 年 9 月更新:
有一年多的 TypeScript 日常使用经验,又玩了一阵 Flow,得出以下结论:
- 直到今天,使用 TypeScript 仍然很痛苦。问题在于 JavaScript 世界发展得太快了,以至于 TypeScript 一直落后。考虑使用新的 ES7 stage 3 特性?不,你不能。希望获得某些库的最新版本的类型提示?等一两个月,也许更久……
- Flow已经走了很长一段路,改进了很多,它可以捕捉到一些TS无法捕捉的东西。最重要的是,它终于可以在 Windows 上运行了。此外,还有很棒的 VS Code 插件(不知道为什么它只有 3/5 的评分)。它可以 100% 使用 React Native,TypeScript 甚至还不到 50%。
- 大多数时候,您根本不需要类型。所有额外的输入很少是值得的。JS 是一种动态类型的语言,克服它:)
TL;DR:如果您打算使用任何类型检查器,我建议使用 Flow。
2019 年 2 月更新:
我相信上面的建议已经过时并且不再相关。三个原因:
- React Hooks在这里。它们使您的代码的类型检查变得更加容易。在大多数情况下,不需要额外的代码。
- TypeScript 的类型推断得到了改进。
- TypeScript 拥有比 Flow 更大的社区。甚至 Facebook 的包管理器 yarn也在从 Flow 转向 TypeScript。
所以,我认为 TypeScript 在 2019 年是比 Flow 更务实的选择。
至于是否值得使用任何类型检查器,我想说这取决于项目规模。小型项目可能不需要它。
javascript - 你什么时候在流中使用接口而不是类型别名?
interface
andtype
声明似乎做同样的事情。你什么时候使用一个而不是另一个?
对比
flowtype - 导入 CSS 文件时出现“找不到所需模块”的流程
当我尝试通过 webpack(import (./index.css)) 导入 CSS 时,出现此错误:
我有一个像 ComponentName→(index.js, index.css) 这样的结构,因此每个组件内部都有所有依赖项。
我试过这个黑客,但它对我不起作用。我可以以某种方式忽略它吗?
reactjs - 使用 Flow 对 React 中深度嵌套的 props 进行类型检查
对我们来说,深度嵌套的组件是很常见的,它们的 props 通过对象传播从上到下传递:
在许多情况下,中间的组件并不知道以这种方式流过它们的 props,并且要注释流过每个组件的每个 props 将要求这些组合组件了解每个孩子的一切。
有没有办法避免这种情况,这样在层次结构顶部注释的道具将根据它们在层次结构底部的使用情况进行检查,而无需在每个组件内部进行注释,也无需简单地导出和导入类型别名,这会打破等级关系吗?
flowtype - flowtype如何用可选字段注释联合
如何在flow中实现以下
我想表达一个类型,它返回一个错误和可选数据或没有错误字段,以防万一。但是,我用它作为
javascript - 如何在运行时在 JavaScript 中生成类型检查?
使用 TypeScript 或 Facebook 的 Flow(type) 我可以静态输入变量,例如
TypeScript 和 Flow 都会捕获任何非法调用,例如add('1',0)
在编译时。
但是,当库被编译和导出时,类型就消失了。这意味着,使用该函数的库使用者不会出错,这可能会导致难以调试的问题。
有没有办法自动生成在运行时会抛出完全相同的错误的附加代码?
每次需要进行类型检查时,我肯定可以手动放置警卫,但这感觉很无聊和重复。