反应导航和流式

时间:2019-05-10 10:10:09

标签: reactjs react-native react-navigation flowtype

我刚开始在React Native应用程序(例如React Navigation)中为流行的库使用流类型的定义,但是我发现很难找到有关类型以及如何使用它们的文档。我仍然在我的IDE中出错,我觉得Flow在浪费我的时间,而不是在我的开发人员经验上增加价值,因为我一直在寻找类型(有时甚至找不到答案)。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

使用许多npm模块的复杂Web应用程序很少会被强类型化。 JS中强类型化的目标主要是尽可能多地进行可行甚至合理的类型化。没有libdefs的模块将以any的形式出现,这还可以。显然,如果您引入的所有内容都具有完整类型,那将是很好的选择,但是只要给出取得进展的方式即可实际上是不可能的。除此之外,简单的升级流程行为通常会在您的代码库中引入更多捕获的错误,并且您最终不得不接受键入是一个渐进的过程,它实际上并不是阻塞性过程。

现在那已经不合时宜了,您似乎有许多不同的子问题:

  

我必须一直在寻找类型

不能完全确定这是什么意思,但是您可能会说很难找到所用软件包的类型。确保您熟悉flow-typed CLI工具的工作方式(npx flow-typed),它将帮助您搜索和安装兼容的libdef。如果您在flow-typed中找不到模块的任何内容,请在源github存储库中戳一下,并确保模块本身未附带流类型。如果遇到带有.d.ts(TypeScript)文件的软件包,请尝试使用flowgen将其转换为libdef。如果没有什么能证明有成果,那么您可能应该放弃类型并继续。

在这种情况下,我实际上将启动我自己的libdef(npx flow-typed create-stub <package name>)并随便填写一些基本类型。您可以非常简单地开始,我目前有一个react-select的libdef,它仅检查组件的一个道具options道具(但是我不记得为什么有这个道具:P)。同样,渐进式打字是目标。与不检查一个道具相比,检查一个道具实际上真的很不错。

  

我发现很难找到有关类型以及如何使用它们的文档

flow-typed中通常没有真正的libdefs文档,除非它是由软件包作者在某处编写的。我通常会自己阅读libdefs,但是如果您发现用法混乱,建议您查看与libdef相关的tests。您还可以浏览任何relevant issues or PRs来查找用法示例。

  

有时甚至找不到答案

添加一个$FlowFixMe,如果它使您的速度降低太多,请稍后再使用。随着您逐渐习惯于流和强类型,所有这些事情将变得更加易于管理,并且流和libdef都在不断改进。

  

我的IDE仍然出现错误

如果您无法修复它们,请添加$FlowFixMe,然后再回来。 Flow实际上在其源代码中包含一个工具,该工具具有用于为每个错误添加$FlowFixMe的实用程序,但是由于npm目前尚未提供该工具,因此您必须克隆源代码才能使用它。

相关问题