The example I provided was actually meant to be a negative one because the expected keys were not specified explicitly (see the paragraph below the example). I agree that a static type system or other means that help tooling do not automatically lead to improvements. The environment and culture must encourage toolability and the programmer himself must understand how to take advantage of his tools. I hope I could get the point across in the article.
Your last example essentially is a static (i.e. lexical/syntactical) type system, as far as I can see, albeit one that is a bit verbose and optional. Correct me if I am wrong, it seems that your comment and the points in the article are actually in agreement.