Jeremy Siek, a programming language researcher, writes about type safety proofs, notation, algorithms and teaching with the Deduce tool.
HN commenters repeatedly point to his "Crash Course on Notation in Programming Language Theory" as a clear explainer for reading type-theory notation.
This is a nice post! Jeremy Siek wrote a similar post a few years ago:
http://siek.blogspot.co.uk/2012/07/crash-course-on-notation-in-programming.html
If I could add one thing to these two posts, it would be to learn Prolog.
We write inference rules top-down ("from these premises, we draw this conclusion"), but we often read them bottom-up ("given this goal, what facts could have lead to it?").
This double-vision thing, where you simultaneously view a set of inference rules in both a deductive and goal-directed fashion, is IMO one of the main stumbling blocks for people new to type theory. Luckily[1], however, it's fundamentally the same intuition that Prolog programmers develop -- and learning new programming languages is usually easy for programmers.
[1] It's not really by luck, of course: Prolog is called a logic programming language for a reason...
Unfortunately this contribution is inhibited from being significant in value by the fact that TypeScript doesn't support full gradual typing [0] and has an intentionally unsound type system [1].
[0] http://siek.blogspot.com/2012/10/is-typescript-gradually-typed-part-1.html
[1] https://typescript.codeplex.com/discussions/428572
I found another article by the same guy on the right of the page, written in July of 2012:
http://siek.blogspot.co.uk/2012/07/the-semantics-of-familiar-language.html
... Looks interesting, but it looks like I'll have to read this crash-course first!
Typescript also uses 'gradual' typing. See http://siek.blogspot.co.uk/2012/10/is-typescript-gradually-typed-part-1.html - Siek is referenced in the original post, too.
Clojure's type system sounds more powerful than Typescript's though.
Jeremy Siek has an excellent blog post explaining this called "Crash Course on Notation in Programming Languages": http://siek.blogspot.com/2012/07/crash-course-on-notation-in-programming.html
Jeremy Siek also has a good intro to the notation: http://siek.blogspot.com/2012/07/crash-course-on-notation-in-programming.html