type system
set of rules that assign a property called type to various constructs a computer program consists of, such as variables, expressions, functions or modules
duck typing
style of dynamic, structural typing with lazy checking of objects' attributes
safe typing
property of a type system that prevents certain erroneous or undesirable program behaviours
weak typing
type system whose semantics provide looser guarantees of program validity
static variable
in computer languages, a variable that has been allocated statically so that its lifetime is the entire run of the program (as opposed to shorter-lived automatic variables and dynamically allocated variables)
manifest typing
explicit identification of variable type
dynamic typing
type system paradigm in which objects' types are enforced at runtime
substructural type system
family of type systems based on substructural logic
inference typing
automatic detection of the data type of an expression in a programming language
row polymorphism
kind of polymorphism
strong typing
specificity of a programming language's syntax when manipulating types of data
static typing
type system paradigm where all type checking is done at compile time
nominative typing
major class of type system, in which compatibility and equivalence of data types is determined by explicit declarations and/or the name of the types
latent typing
type system where types are associated with values and not variables
parametric polymorphism
basis of generic programming
refinement typing
types constrained by a predicate
structural typing
major class of type system, in which type compatibility and equivalence are determined by the type's actual structure or definition, and not by other characteristics such as its name or place of declaration
gradual typing
typing system