React Navigation 和流式
React Navigation and flow-typed
我刚开始在 React Native 应用程序(例如 React Navigation)中为我的流行库使用流类型定义,但我发现很难找到有关类型以及如何使用它们的文档。我的 IDE 中仍然出现错误,我觉得 Flow 更浪费我的时间,而不是为我的开发人员体验增加价值,因为我必须一直查找类型(有时甚至找不到答案)。有什么建议吗?
使用许多 npm 模块的复杂 Web 应用程序很少会自始至终都是强类型的。 JS 中强类型的目标主要是尽可能多地使用可行甚至合理的类型。没有 libdefs 的模块将以 any
的形式出现,那是 好吧。 显然,如果你引入的所有东西都有完整的类型,那就太好了,但只是给出了进展的方式这几乎是不可能的。除此之外,升级流程的简单行为通常会在您的代码库中引入更多被捕获的错误,您最终不得不接受输入是一个渐进的过程,它不应该是一个真正的阻塞过程。
既然这样,你似乎有很多不同的 sub-questions:
I've to lookup for the types all the time
不完全确定你的意思,但你可能会说很难找到你正在使用的包的类型。确保您熟悉 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)。同样,渐进式打字是目标。与检查 none.
相比,检查一个道具实际上非常好
I find it quite hard to find the documentation on types and how to use them
flow-typed
中通常没有 libdefs 的真正文档,除非它是由包作者在某处编写的。我通常自己阅读 libdefs,但如果您发现用法令人困惑,我建议您查看 tests associated with the libdef. You can also dig through any relevant issues or PRs 以查找用法示例。
sometimes don't even find an answer
添加一个 $FlowFixMe
,如果它让你的速度太慢,稍后再回来。随着您越来越习惯于一般的流程和强类型,所有这些事情都会变得更易于管理,并且流程和 libdefs 都在不断改进。
I'm still getting errors in my IDE
如果您无法修复它们,请添加 $FlowFixMe
并稍后回来。 Flow 实际上在其源代码中包含一个工具,该工具具有为每个错误添加 $FlowFixMe
的实用程序,但由于它当前未交付给 npm,您必须克隆源代码才能使用它。
我刚开始在 React Native 应用程序(例如 React Navigation)中为我的流行库使用流类型定义,但我发现很难找到有关类型以及如何使用它们的文档。我的 IDE 中仍然出现错误,我觉得 Flow 更浪费我的时间,而不是为我的开发人员体验增加价值,因为我必须一直查找类型(有时甚至找不到答案)。有什么建议吗?
使用许多 npm 模块的复杂 Web 应用程序很少会自始至终都是强类型的。 JS 中强类型的目标主要是尽可能多地使用可行甚至合理的类型。没有 libdefs 的模块将以 any
的形式出现,那是 好吧。 显然,如果你引入的所有东西都有完整的类型,那就太好了,但只是给出了进展的方式这几乎是不可能的。除此之外,升级流程的简单行为通常会在您的代码库中引入更多被捕获的错误,您最终不得不接受输入是一个渐进的过程,它不应该是一个真正的阻塞过程。
既然这样,你似乎有很多不同的 sub-questions:
I've to lookup for the types all the time
不完全确定你的意思,但你可能会说很难找到你正在使用的包的类型。确保您熟悉 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)。同样,渐进式打字是目标。与检查 none.
I find it quite hard to find the documentation on types and how to use them
flow-typed
中通常没有 libdefs 的真正文档,除非它是由包作者在某处编写的。我通常自己阅读 libdefs,但如果您发现用法令人困惑,我建议您查看 tests associated with the libdef. You can also dig through any relevant issues or PRs 以查找用法示例。
sometimes don't even find an answer
添加一个 $FlowFixMe
,如果它让你的速度太慢,稍后再回来。随着您越来越习惯于一般的流程和强类型,所有这些事情都会变得更易于管理,并且流程和 libdefs 都在不断改进。
I'm still getting errors in my IDE
如果您无法修复它们,请添加 $FlowFixMe
并稍后回来。 Flow 实际上在其源代码中包含一个工具,该工具具有为每个错误添加 $FlowFixMe
的实用程序,但由于它当前未交付给 npm,您必须克隆源代码才能使用它。