解説データ(値)の種類による分類のことです。(プログラミング言語にだけ存在する概念というわけではありませんが、ここでは、プログラミングに焦点をあてて説明します)。具体的にどのような型が存在するかは、プログラミング言語の種類によって異なりますが、たとえば、整数のデータには整数型、文字には文字型、ブール値には論理型(ブール型)といったものがあります。型を、ソースコード上に明確に記述するプログラミング言語がある一方、型の判断をコンパイラがおこなう、型推論という機能を備えた言語や、実行時に型を決定する言語もあります。最初の2つのように、実行を開始する前に型が決定されることを静的型付け、最後の1つのように、実行を開始してから型が決定されることを動的型付けと呼びます。型を明確に記述する言語では、変数や、関数の引数、戻り値といった箇所に型を記述します。型があることによって、変数へ代入する値が適切か、演算子の適用対象(オペランド)の型が適切かどうかといったチェックを行うことができ、プログラムの安全性が高まります。整数型として宣言された変数に、文字列型の値を格納しようとする間違いは、型のチェックによって検知できます。演算子の適用対象の型が適正かどうかも検出できます。ように、正しいと思われる意味を見いだせない演算をエラーとして扱うことができます。ことであろうと判断し、一時的に型変換(暗黙の型変換)してあつかう言語もあります。コンパイルの過程をもつプログラミング言語では、型のチェックを実行前に行い、コンパイラからコンパイルエラーや警告のかたちで報告されます。ないプログラミング言語では、実行時に型のチェックが行われ、問題があれば実行時エラーになります(例外と呼ばれる機構が動作することがある)。一般的に問題の発見は早いほうがいいので、その意味では、実行前に型がチェックされる言語のほうが良いとされることがあります。テンプレートのような解決策はある)、柔軟性に欠けるという指摘もあります。実行してから型のチェックを行う言語では、問題のある箇所が実際に実行されない限り、そこに潜む間違いが検出できないことになります。荒く仕上げたソースコードであっても、実行してできている部分だけを確認することができますし、型に応じて処理を分岐させるなど、柔軟なコードを記述できる利点もあります。