Redux is a good example of a functional pattern that makes waaay more sense in a language with pattern matching, immutable values, and ADTs built in. You have to really think about what you're doing to scale Redux up with a large app in a JS runtime and to avoid the boilerplate. Last time I used Redux with TS the typings were not particularly helpful as well but that may've improved.