useReducer with TypeScript - Theo's Typesafe Cult