This comparison of programming languages (type system) compares the features of type systems or their type checking for multiple programming languages.
Brief definitions
A nominal type system means that the language decides whether types are compatible and/or equivalent based on explicit declarations and names.A structural type system means that the language decides whether types are compatible and/or equivalent based on the definition and characteristics of the types.Type checking determines whether and when types are verified. Static checking means that type errors are reported based on a program's text (source code). Dynamic checking means that type errors are reported based on a program's dynamic (run-time) behavior.