Shrnutí
V této lekci jste se naučili, že:
- Sjednocený typ jako
string | numberdovoluje hodnotu kteréhokoli ze svých typů. Bez kontroly s ní smíte dělat jen to, co funguje pro všechny:odmena.toUpperCase()u typustring | numberje chyba. - Kontrola typ zúží. Uvnitř
if (typeof odmena === "string") { … }jeodmenatypustring; ve větvielsea pod podmínkou, která skončí příkazemreturn, je typunumber. Pole se sjednocením potřebuje závorky:(number | string)[]. - Sjednocení literálů jako
type Povolani = "valecnik" | "mag" | "hranicar";dovoluje jen tyto hodnoty. TypeScript ohlásí překlepy v hodnotách, argumentech i porovnáních. Proměnnálets textem má typstring, takže jí typ dejte, nebo použijteconst. Místoenumpoužívejte sjednocení literálů. nullaundefinedpatří k typu, jen když je tam napíšete:Prisera | null. Takovou hodnotu před použitím zkontrolujte, třeba pomocíif (cil === null) { return; }; jinak TypeScript ohlásí'cil' is possibly 'null'.find()vrátí první prvek, který vyhovuje, neboundefined, když nevyhovuje žádný. Výsledek je typuPredmet | undefined: ošetřete oba případy a funkci, která hledá, dejte návratový typPredmet | undefined.hrdina.zbran?.nazevpřečtenazev, jen kdyžhrdina.zbranexistuje, jinak dáundefined.hodnota ?? "náhrada"nahradínullaundefined, ale na rozdíl od||ne0ani"".Array.isArray(korist)rozliší pole od jedné hodnoty, třeba u typustring | string[]. Dejte pozor na to, co funguje pro oba typy, jakolengthafor...of.unknownpřijme jakoukoli hodnotu, ale nedovolí s ní nic, dokud ji nezúžíte, třeba pomocítypeof. Pro data zvenku ho používejte místoany."leceni" in predmetzúží sjednocení typů objektů podle vlastnosti. Typová stráž,function jeLektvar(predmet: Predmet): predmet is Lektvar, dá takovou kontrolu do funkce. TypeScript jí věří, takže kontrola musí být správná.
V příští lekci, Modelování dat, se naučíte nejběžnější způsob, jak v TypeScriptu popsat data pomocí sjednocení: rozlišená sjednocení, ve kterých vlastnost jako druh říká, co je každý objekt zač. Poznáte také příkaz switch z JavaScriptu a uvidíte, jak TypeScript pohlídá, že jste nezapomněli na žádný případ.
Jak psát:
Pokyny
Teď si vše procvičte. V editoru je nástěnka s úkoly z hostince. Každý úkol má oblast, odměnu (zlato, nebo předmět) a někdy i hrdinu, který s ním pomáhá. Spusťte program: TypeScript najde v datech chybu. Opravte ji.
Napište funkci formatujOdmenu s parametrem odmena typu number | string a návratovým typem string. Pro číslo vrátí třeba 10 zlatých, pro text tento text se slovem předmět na začátku, třeba předmět Stříbrný meč.
Napište funkci popisUkolu s parametrem nazev (text). Funkce najde na nástěnce úkol s tímto názvem a vrátí popis jako Krysy v dole (doly): 10 zlatých, pomocník: nikdo: použijte formatujOdmenu a pro úkol bez pomocníka ??. Když žádný úkol takový název nemá, vrátí text jako Úkol Lov na draka na nástěnce není, s hledaným názvem. Vypište popisy úkolů "Trollí most", "Krysy v dole" a "Lov na draka". Program pak vypíše:
Trollí most (hory): předmět Stříbrný meč, pomocník: Bruno
Krysy v dole (doly): 10 zlatých, pomocník: nikdo
Úkol Lov na draka na nástěnce neníZačněte programovat zdarma
10/10