Type de données
Classification qui spécifie quel type de valeur une variable peut contenir et quelles opérations peuvent être effectuées.
Un type de données définit la nature des données pouvant être stockées dans une variable et les opérations autorisées. Les types assurent un traitement correct des données.
Types primitifs :
- Entier (Integer) : Nombres entiers
- Flottant (Float) : Nombres décimaux
- Booléen (Boolean) : vrai/faux
- Caractère (Char) : Lettre/symbole unique
- Chaîne (String) : Séquence de caractères
Types composites :
- Tableau (Array) : Collection d'éléments de même type
- Objet : Structure définie par l'utilisateur
- Struct : Groupe de champs nommés
Systèmes de types :
- Typage statique : Vérifié à la compilation (Java, C++)
- Typage dynamique : Vérifié à l'exécution (Python, JS)
- Typage fort : Règles strictes
- Typage faible : Conversion automatique
graph LR
Center["Type de données"]:::main
Rel_boolean["boolean"]:::related -.-> Center
click Rel_boolean "/terms/boolean"
Rel_data_modeling["data-modeling"]:::related -.-> Center
click Rel_data_modeling "/terms/data-modeling"
Rel_data_structure["data-structure"]:::related -.-> Center
click Rel_data_structure "/terms/data-structure"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 Explique-moi comme si j'avais 5 ans
Un type de données, c'est comme des boîtes différentes : une tirelire pour les pièces (nombres), une étagère pour les livres (texte), et un feu tricolore pour rouge/vert (booléen). Chaque boîte est faite pour son propre contenu !
🤓 Expert Deep Dive
L'inférence de type Hindley-Milner permet le typage statique sans annotations. Les types de données algébriques (somme/produit) permettent une modélisation expressive. Les types dépendants (Idris) encodent des contraintes. Le typage graduel (TypeScript) relie statique et dynamique. L'effacement de type (Type erasure) supprime les types à l'exécution.