In programming, Types are tools for reusing code. We discuss two ways of building and reusing types: composition and inheritance. We talk about why you would use one over the other, and why you need both. We also talk two branches of inheritance - prototypal and classical.