The system that enforces different data types in a Programming Languages.

  • Easier to debug programs - compiler catches lots of errors
  • Static analysis finds lots of useful information about the program
  • Efficiency - type can be used to generate optimizations
  • Software Verification in correctness
  • Documentation - types declare intent