程序中一个对象如何被使用以及一个对象能做什么。类型检查是由编译器或解释器完成的。类型检查也可以帮助避免如将有符号变量赋值给无符号变量所带来的漏洞。类型检查可以静态完成（在编译期间），也可以动态完成（在运行时），或者结合二者。静态类型信息（可以通过类型推论，或者由代码明确给出）也可以被用来做优化，例如把封包的数组替换为未封包的数组。
作用系统.是一类用来给出函数或方法的作用的形式化系统。一个作用（英文：effect）规定了做了什么以及对谁做了——通常称之为作用类型（英文：eff