Domů O mně Služby Portfolio Učím Blog Kontakt
← Zpět na učím

1.5 Datové typy - přehled

Výuka

Proč potřebujeme datové typy?

Představ si, že počítač je jako velmi přesný, ale hloupý pomocník. Když mu řekneš "sečti 5 a 3", potřebuje vědět:

  • Jsou to čísla? Pak 5 + 3 = 8
  • Jsou to texty? Pak "5" + "3" = "53" (spojení řetězců)

Datové typy říkají počítači, jak má s hodnotou pracovat. Bez nich by nevěděl, co s ní dělat.

Dva světy: Primitivní vs Referenční typy

Primitivní typy (immutable - neměnné):

  • Hodnota je přímo uložena v proměnné
  • Když je zkopíruješ, vytvoří se nová nezávislá kopie
  • Jsou "jednoduché" - číslo, text, true/false...

Referenční typy (objekty, pole):

  • Proměnná obsahuje jen "odkaz" (adresu) na data v paměti
  • Když je zkopíruješ, obě proměnné ukazují na stejná data!

7 základních typů v JavaScriptu

Typ Popis Příklad Kdy použít
undefined Hodnota nebyla přiřazena let x; Automaticky, když zapomeneš inicializovat
null Explicitní "nic" const y = null; Když chceš říct "zatím nemám hodnotu"
string Text 'Hello', "World" Jména, zprávy, jakýkoli text
number Všechna čísla 42, 3.14, NaN Počítání, měření, ID
boolean Pravda/nepravda true, false Podmínky, přepínače
object Kolekce vlastností { name: 'Jan' } Složitější data s více vlastnostmi
symbol Unikátní identifikátor Symbol('id') Pokročilé - unikátní klíče objektů

Co přidává TypeScript?

TypeScript rozšiřuje JavaScript o statické typy - kontrolu typů před spuštěním:

JavaScript:  Napíšeš kód  Spustíš  Chyba typu za běhu 😱
TypeScript:  Napíšeš kód  TS kontrola  Chyba v editoru  Opravíš  Spustíš 

Klíčové body:

  • TS typy neexistují za běhu (runtime) - zkompilují se pryč
  • Slouží pouze pro kontrolu při překladu (compile time)
  • Můžeš explicitně anotovat typy: let s: string = 'hi'
  • Nebo nechat TS typ odvodit: let s = 'hi' (TS ví, že je to string)

JavaScript

let a;                  // undefined
const b = null;
const s = 'Hello';
const n = 3.14;
const ok = true;
const obj = { x: 1 };
const id = Symbol('id');

// Zjištění typu
console.log(typeof s);  // "string"
console.log(typeof n);  // "number"
console.log(typeof ok); // "boolean"
console.log(typeof obj);// "object"

TypeScript

let a: undefined;
const b: null = null;
const s: string = 'Hello';
const n: number = 3.14;
const ok: boolean = true;
const obj: { x: number } = { x: 1 };
const id: symbol = Symbol('id');

// TS kontroluje typy při kompilaci
const greeting: string = 'Hi';
// greeting = 123; // ❌ Error: Type 'number' is not assignable to type 'string'

Rozdíl JS vs TS

JavaScript TypeScript
Typy se kontrolují za běhu Typy se kontrolují při kompilaci
Chyby typů objevíš až při spuštění Chyby typů vidíš hned v editoru
typeof operátor v runtime Type annotations v kódu
Flexibilní, ale riskantní Bezpečnější, ale více psaní

Výhody TypeScript:

  • Odchytíš chyby dřív (před spuštěním)
  • Lepší autocomplete v editoru
  • Dokumentace přímo v kódu
  • Refaktoring je bezpečnější

Tip

💡 Pro začátečníky: Nauč se nejdřív JavaScript typy a jejich chování. TypeScript pak přidává jen "bezpečnostní síť" - kontroluje, že používáš správné typy.

💡 Best practice: V TS nech TypeScript odvodit typ (inference), pokud je to zřejmé:

// ✅ Dobré - inference
const count = 0;  // TS ví, že je to number

// ⚠️ Zbytečné - explicitní
const count: number = 0;

Kvíz

Které výroky jsou pravdivé?

- null a undefined jsou různé typy, i když oba reprezentují "prázdnou" hodnotu

- TS typy neexistují za běhu, jsou pouze pro compile-time kontrolu

- Každá JS hodnota má typ (zjistíš ho pomocí typeof)

- TS kontroluje typy při kompilaci, ne za běhu

🎯 Závěrečný projekt

Po dokončení všech 8 dílů vytvoříte jednoduchou Todо aplikaci v čistém JavaScriptu. Naučíte se, jak aplikovat vše, co jste se naučili, na reálný projekt.

Zobrazit podrobnosti projektu →

Připraveni začít?

Zaregistrujte se a získejte přístup ke všem dílům tohoto seriálu

Kontaktujte mě

Informace o seriálu

Obtížnost

Délka

Cca 480 minut

Počet videí

8 videí + projekty

Certifikát

Po dokončení obdržíte certifikát


Lekce v této sekci


Struktura lekcí (souborový strom)

06. Typescript specifika
  • v přípravě
08. Moduly tridy
  • v přípravě
09. React zaklady
  • v přípravě
10. React hooks
  • v přípravě
12. Nextjs server
  • v přípravě
13. Databaze auth
  • v přípravě
14. Nextjs pokrocile
  • v přípravě