So, there is a long-standing TypeScript & Redux pattern of creating a union RootAction
type that contains all your application's action types. Sometimes, you would also create a lot of reducer-specific sub-unions.
I think that this has always been a crutch - and given the options we have today, it's most likely an antipattern.
So let's look at why it was used, where it was used and what you can use instead.
Classically, these action union types were created to use the Discriminating Union pattern.