home blog portfolio Ian Fisher

Type system

A formal system that assigns types to symbols or values in a programming language. The types of a program in a statically-typed language can be deduced without running the program; while a program in a dynamically-typed language must be run to find out the types. Strongly-typed languages prohibit some or all implicit conversions between data types, while weakly-typed languages allow them.

Type systems prevent bugs by catching invalid uses of values and may guarantee useful properties like data-race freedom, at the cost of extra work for the programmer, either in explicitly adding type annotations or in conforming their program to satisfy the type-checker.