Thanks for the write up! I would say that intersection types and extending are right up there with union types in terms of usefulness. How often do we have an interface we want to extend with just a couple of properties. This is a pretty good article on intersection types.