##Nominal Type System The name of the class or the interface is the only thing significant in the type system and defines the type for the data. Two type structures may match, but if the name is different the compiler will not let it pass.
Used by: F#, C#, Java
##Structural Type System Also known as duck typing, the structure of the class or interface is significant in the type system and defines the type. Two interfaces with different names, but matching structures are interchangable in this system. It's more flexible than Nominal.
Used by: Typescript, Javascript