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.

📚 Sources