Typ danych
Klasyfikacja określająca, jaki rodzaj wartości może przechowywać zmienna i jakie operacje można na niej wykonać.
Typ danych definiuje naturę danych, które mogą być przechowywane w zmiennej, oraz operacje dozwolone na tych danych. Typy zapewniają poprawną obsługę danych.
Typy proste:
- Całkowity (Integer): Liczby całkowite
- Zmiennoprzecinkowy (Float): Liczby dziesiętne
- Logiczny (Boolean): prawda/fałsz
- Znakowy (Char): Pojedyncza litera/symbol
- Łańcuchowy (String): Sekwencja znaków
Typy złożone:
- Tablica (Array): Kolekcja elementów tego samego typu
- Obiekt: Struktura zdefiniowana przez użytkownika
- Struktura (Struct): Grupa nazwanych pól
Systemy typów:
- Statyczne typowanie: Sprawdzane podczas kompilacji (Java, C++)
- Dynamiczne typowanie: Sprawdzane podczas wykonywania (Python, JS)
- Silne typowanie: Ścisłe reguły typów
- Słabe typowanie: Automatyczna konwersja
graph LR
Center["Typ danych"]:::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;
🧒 Wyjaśnij jak 5-latkowi
Typ danych to jak różne pojemniki: skarbonka trzyma monety (liczby), półka trzyma książki (tekst), a sygnalizacja świetlna pokazuje czerwone/zielone ([boolean](/pl/terms/boolean)). Każdy pojemnik jest stworzony do swojej własnej rzeczy!
🤓 Expert Deep Dive
Inferencja typów Hindley-Milner umożliwia statyczne typowanie bez adnotacji. Algebraiczne typy danych (sumy/iloczyny) umożliwiają ekspresyjne modelowanie. Typy zależne (Idris) kodują ograniczenia w typach. Typowanie stopniowe (TypeScript) łączy statyczne i dynamiczne. Wymazywanie typów (Type erasure) usuwa typy w czasie wykonywania.