TypeScript free from the historical baggage of JavaScript. With some runtime type checking, autogenerated typeguards from types, allowing things like checked de/serialization.
A TypeScript where (for example) string methods make sense, with all the number types and not just floats, with only null or only undefined and a lot of other things I can't think of right now.
Maybe add some pattern matching on top.
TypeScript's type system is so nice and ergonomic to use, it's a shame the basic objects of JavaScript (Object & co) are so "fickle" to work with.
To answer OP's question, I don't think there could be a "perfect" programming language.