Static Typing NotionStructural TypingNominal TypingHindley Milner Type SystemOpaque TypeTagged Unions