I’ve done a lot of Swift and about two projects in TypeScript. I used to have the opinion that writing in the functional style in imperative languages was not a great thing to do. My opinion on this front has completely reversed, partly due to the increase in RAM available to machines and partly due to the need to heavily parallelise code due to increasing CPU core count.Mostly though, I think writing in a functional style in other languages is simpler. If you don’t change the values of your variables once set, then you won’t get confused about what they are set to. Of course, you can’t be sure about third party libraries and how they will handle the variables you send to them.In Swift, I use a lot of structs (rather than objects) because they are pass-by-value, which helps a lot. In Python and JavaScript, you kind of need to have an agreed upon convention within the team, which makes it more difficult.I think JS developers have been burned a bit by TypeScript, as they don’t see many of the benefits before they put the hard work in. In general, I think more type safety is a good thing. I would highly recommend getting to grips with TypeScript if you have to use JS and getting over that initial learning hurdle and upgrading legacy codebases. I would hate to have to work in a dynamically typed language. So many mistakes we all make on a daily basis are caught by the typechecker and that avoids so many runtime exceptions that we do see during testing, however with dynamic typing I’m most concerned with the runtime exceptions we don’t see during testing and that only become apparent in production.