En programmation un type de données, ou simplement type, définit le genre de contenu d'une donnée et les opérations pouvant être effectuées sur la variable correspondante.
Les langages permettant un accès direct à la mémoire du système offrent par ailleurs un type pointeur.
Beaucoup offrent également un type prédéfini (string) pour les chaînes de caractères, les langages de haut niveau pouvant également supporter nativement des type correspondant à d'autres structure de données.
Par exemple la déclaration des pointeurs ou les tableaux en langage C nécessite de préciser le type de base des données manipulées. La programmation générique étend cette pratique pour permettre à l'utilisateur de créer ses propres types paramètrés.
Des langages permettent à l'utilisateur de définir des types spécifiques à son application. Les types énumérés, permettant d'affecter à une variable un nombre fini de valeurs possibles, par exemple :
type couleur:{rouge, bleu, vert}; var c:couleur; // la variable c, du type couleur, peut prendre les valeurs // rouge, bleu ou vert uniquement.
struct en C) permettant de grouper plusieurs champs de types distincts dans une seule variable
La programmation objet nomme classe un type composé associé à du code spécifique à la manipulation de variables de ce type.
L'information de type peut être portée par la variable (typage statique) ou par la valeur manipulée par cette variable (typage dynamique). Les langages à typage statique nécessite en général la déclaration préalable des variables utilisées pour permettre au compilateur de connaître son type exact. Les langages supportant l'inférence de types peuvent dans certain cas rendre cette déclaration facultative.
En réalité les deux ne sont pas antinomiques, et de nombreux langages qui sont qualifiés de langages à typage statique car ils imposent la déclaration préalable du type des variables, supportent également le typage dynamique. On peut penser par exemple aux vtables du langage C ++. Cette fonctionnalité est en effet nécessaire pour pouvoir supporter la programmation orientée objet.
La sûreté du typage est destiné à prévenir les erreur de types: l'emploi d'une variable dont le format est incompatible. La définition d'un langage fortement typés est assez floue:
Avec cette dernière approche, on pourrait par exemple obtenir le classement suivant:
| Typage | Fort | Faible |
|---|---|---|
| Statique | Ada | Langage C : short add ( int x, int y) { return x+y; } |
| Dynamique | Ruby | JavaScript : "2"+4→"24" |
Tipu de datu | Datový typ | Datentyp | Data type | Tipo de dato | Adattípus | Tipo di dato | データ型 | Duomenų struktūra | Gegevenstype | Dynamiczne typowanie | Tipo de dado | Тип данных | Dátový typ | Podatkovni tip | Datatyp