Typing things like errorPolicy in these situations unfortunately makes things a lot more complex - especially in “indirect” situations like here.
We do that in a few places in Apollo Client, but not in useMutation.
Since the types here are technically correct (a function being declared as returning A | B always returning A is 100% correct in TypeScript), I don’t think that this will change in the near future in Apollo Client.
I think you’ll need to get to a point where you’ll have to either lower your test coverage requirement or allow for type assertions under specific circumstances. Type assertions are meant for situations where you as a programmer know better than the compiler, and here that is the case.