Shrnutí
V této lekci jste se naučili, že:
- Rozlišené sjednocení je sjednocení typů objektů se společnou vlastností, značkou, třeba
druh, která má v každém typu jiný literálový typ:type Predmet = { druh: "lektvar"; leceni: number } | { druh: "zbran"; poskozeni: number };. Kontrola značky,if (predmet.druh === "lektvar"), typ zúží. TypeScript kontroluje vlastnosti každého druhu a zachytí druhy s překlepem. switch (predmet.druh)skočí nacasese stejnou hodnotou; ukončí hobreakneboreturna bez nich program propadne do dalšího případu.defaultzachytí zbytek. Každýcasetyp zúží.- Kontrola úplnosti ve větvi
default,const neosetreny: never = predmet; return neosetreny;, zařídí, že TypeScript ohlásí každýswitch, kterému chybí případ pro nějaký druh, a ten druh pojmenuje.neverje typ bez hodnot. Record<Vzacnost, number>je objekt, který má přesně klíče z typuVzacnosta u každého z nich číslo. Chybějící klíč je chyba a hodnotu přečteceny[predmet.vzacnost].const vsechnaPovolani = ["valecnik", "mag"] as const;je seznam přesných hodnot jen pro čtení a(typeof vsechnaPovolani)[number]z něj udělá sjednocení, takže seznam a typ si vždycky odpovídají.- Rozlišené sjednocení umí popsat i stavy jedné věci, každý s vlastními daty: odměnu má jen úkol se
stav: "splneny". - Místo
booleans nepovinnými vlastnostmi napište sjednocení, aby nemožné kombinace nešly zapsat. Značkou může být iboolean:{ jeZamcena: false } | { jeZamcena: true; nazevKlice: string }.
V příští lekci, Generika, se naučíte psát funkce a typy, které fungují s jakýmkoli typem, a TypeScript přitom pořád ví, o jaký typ jde: funkci, která vrátí první prvek libovolného pole, nebo truhlu, do které se vejde jakákoli kořist. A uvidíte, jak fungují typy se špičatými závorkami, jako je Record.
Jak psát:
Pokyny
Teď si vše procvičte. Kiřina výprava v editoru je seznam událostí: bojů, pokladů a odpočinků. Spusťte program: kontrola úplnosti ohlásí druh, který nemá svůj případ. Doplňte ho: u odpočinku vrátí popisUdalosti text Kira odpočívá u ohně. Program pak vypíše:
Kira bojuje: vlk (+20 zkušeností)
Kira najde 35 zlatých
Kira odpočívá u ohně
Kira bojuje: skřet (+15 zkušeností)Pod cyklem vytvořte const pocty: Record<"boj" | "poklad" | "odpocinek", number> se všemi počty na 0 a spočítejte v ní události každého druhu.
Sečtěte také zkušenosti z bojů a zlato z pokladů. Na konci vypište počty a součty:
Kira bojuje: vlk (+20 zkušeností)
Kira najde 35 zlatých
Kira odpočívá u ohně
Kira bojuje: skřet (+15 zkušeností)
Boje: 2, poklady: 1, odpočinky: 1
Zkušenosti: 35, zlato: 35Začněte programovat zdarma
8/8