User:Ushkin N/Comparison of programming languages/Types/Type system

See Type system.

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.