量和函数的型态都清楚地宣告，或type-inferred语言（例如MUMPS，ML）。大多数语言还能够在内置的型态基础上组合出复杂的数据结构型态（使用数组，列表，堆栈，文件等等）。面向对象语言（，又译作“物件导向语言”）允许程序员定义新的数据型态，即对象（），以及运行于该对象的函数（）和方法（）。除了何时以及如何确定表达式和型态的联系，另外一个重要的问题就是语言到底定义了哪些型态，以及允许哪些型态作为表达式的值。诸如C编程语言之类的低端语言允许程序命名内存位置、内存区域以及编译时的常量；ANSI C