gpt4 book ai didi

redux - 流 : function type using ExtractReturn

转载 作者:行者123 更新时间:2023-12-02 04:32:37 25 4
gpt4 key购买 nike

我正在尝试减少使用 flow 键入的 redux 代码的样板。

特别是,我想避免手动定义 action types,而是让 flow 使用 typed action creators 中推导出它们>ExtractReturn 技巧(如 Shane Osbourne postMartin Hochel post 中所述):

type _ExtractReturn<B, F: (...args: any[]) => B> = B;
type ExtractReturn<F> = _ExtractReturn<*, F>;

但它不会捕获简单的错误,例如它应该捕获 action.id 是一个 number 而不是 string:Try Flow .

如果操作是“手动”定义的,则会捕获错误:Try Flow

如何在 reducer 函数中正确捕获所有错误,而无需手动编写样板代码?

  • 编辑:修复了试用流程链接。
  • 编辑:我没有注意到Shane Osbourne post 提供了一个似乎有效的Flow Try。看着它。实际上,它有同样的问题。尝试在帖子上写评论以发出信号。见评论 here

最佳答案

如果您有兴趣,我设法让 Flow 捕捉到您的示例未捕捉到的错误。 Here is the code .

这无疑是 hacky。我的想法来自 this Github issue .

除此之外,我无法提供更多见解。我自己正在寻找更好的解决方案。

编辑:在进一步挖掘之后,我发现 $Call实用程序类型可以提供一些帮助:

type Action =
| $Call<typeof get, number>
| $Call<typeof del, number>
| $Call<typeof set, number, string>

在此之后,也许值得抽象化 $Call<...>模式转换成它自己的参数类型。不过,我目前对 Flow 的了解有限,所以我的几次尝试都没有取得成果。

Here is the full refactor .

关于redux - 流 : function type using ExtractReturn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47155056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com