Tipo de datos

Clasificación que especifica qué tipo de valor puede contener una variable y qué operaciones se pueden realizar con ella.

Un tipo de datos define la naturaleza de los datos que se pueden almacenar en una variable y las operaciones permitidas sobre esos datos. Los tipos aseguran un manejo correcto de los datos.

Tipos primitivos:
- Entero (Integer): Números enteros (int, long)
- Flotante (Float/Double): Números decimales
- Booleano (Boolean): verdadero/falso
- Carácter (Char): Letra/símbolo único
- Cadena (String): Secuencia de caracteres

Tipos compuestos:
- Array: Colección de elementos del mismo tipo
- Objeto: Estructura definida por el usuario
- Struct/Record: Grupo de campos con nombre

Sistemas de tipos:
- Tipado estático: Se comprueba en tiempo de compilación (Java, C++)
- Tipado dinámico: Se comprueba en tiempo de ejecución (Python, JavaScript)
- Tipado fuerte: Reglas de tipo estrictas
- Tipado débil: Conversión automática de tipos

        graph LR
  Center["Tipo de datos"]:::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;

      

🧒 Explícalo como si tuviera 5 años

Un tipo de dato es como diferentes contenedores: una alcancía guarda monedas (números), una estantería guarda libros (textos) y un semáforo muestra rojo/verde (booleano). ¡Cada contenedor está hecho para su propia cosa!

🤓 Expert Deep Dive

La inferencia de tipos Hindley-Milner permite el tipado estático sin anotaciones. Los tipos de datos algebraicos (tipos suma/producto) permiten un modelado expresivo. Los tipos dependientes (Idris, Agda) codifican restricciones en los tipos. El tipado gradual (TypeScript) une lo estático y lo dinámico. La eliminación de tipos (Type erasure) elimina los tipos en tiempo de ejecución (Java generics).

📚 Fuentes