我试图找到一个明确的答案这样做,但还没有找到一个。
SO上有一个问题可以回答如何实施详尽的switch
陈述:
如何检查 TypeScript 中的 switch 块是否详尽?
答案是:
编写一个函数,never
作为参数,返回never
并在调用任何东西时抛出。
function assertUnreachable(x: never): never {
throw new Error("Didn't expect to get here");
}
并在您的default
情况下使用它:
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
那么switch
在 reducer 中处理详尽的语句的理想方法是什么?