gpt4 book ai didi

typescript - 如何使用 Typescript 在 Redux reducer 函数内实现详尽的 switch 语句?如何处理 Redux 的内部 @@redux 操作

转载 作者:行者123 更新时间:2023-12-02 19:14:05 26 4
gpt4 key购买 nike

我试图找到一个明确的答案来执行此操作,但尚未找到。

这里有一个关于 SO 的问题,回答了如何实现详尽的 switch 语句:

How do I check that a switch block is exhaustive in TypeScript?

答案是:

编写一个函数,将 never 作为参数,返回 never,并且在用任何东西调用时都会抛出异常。

function assertUnreachable(x: never): never {
throw new Error("Didn't expect to get here");
}

并在您的默认情况下使用它:

switch (action.type) {
case "A": {
...
}
case "B": {
...
}
default: {
return assertUnreachable(action); // CAN'T USE action.type HERE BECAUSE action WILL BE never AND action.type WILL BE any
}
}

但我不能在 reducer 中这样使用它。它会检查我的 reducer 操作的详尽性,但会在运行时抛出,因为 Redux 会用它自己的内部操作调用它,例如:

@@redux/INITh.b.0.x.q.h                   // THIS IS THE action.type
@@redux/PROBE_UNKNOWN_ACTIONe.7.b.o.p // THIS IS THE action.type

那么处理 reducer 内 switch 语句的详尽性的理想方法是什么?

最佳答案

正确的答案是根本不用担心这个问题。

即使使用该 switch 语句,您的 reducer 也会通过其他操作来调用。因此,尝试限制确切的操作集并没有真正的帮助。

更好的方法是使用 our official Redux Toolkit package 中的 createSlice API ,并让它定义您希望在该特定切片中处理的操作。

关于typescript - 如何使用 Typescript 在 Redux reducer 函数内实现详尽的 switch 语句?如何处理 Redux 的内部 @@redux 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63900308/

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