I recommend the elm language. It'st the first language with which I built impressive application. There is a great community on slack and discourse, very welcoming to beginners.
Every time you change what the variable represents to you will get an error.
a :str = "abc"a = list(a)a = {i:j for i,j in enumerate(a)}
While a contrived example above, you can see it is easy to reuse a variable and makes a lot of sense when writing. But this will throw 2 mypy errors even though its otherwise good code.