The article points out a lot of problems that TS won’t fix because it’s a superset of JS. While I do agree with the author on the obvious issues coming from that dependency, I think it’s easier for most developers to move to a typed version of a language than to learn a new language which is heavily influenced by functional programming (by the way, there exist FP-based libraries in TS, like fp-ts). There might be developers who can work with e.g monads but will have trouble understanding what these construct are really for, not to mention the costs of training them to work efficiently with functional languages.
The author is definitely right about nullable values, it’s been a problem in other languages as well. JS adds another layer of problems because of having both null and undefined types and values. Regarding exceptions, the other solutions are available in some libraries, but I think the best approach would be the one chosen in Golang (passing error in the return value). Personally, immutability doesn’t have to be restricted in runtime or in compile time as we can define linting rules that point out problematic code and educate developers on the matter - code reviews should be used for spotting such issues.