Shrnutí

V této lekci jste se naučili, že:

  • Sjednocený typ jako string | number dovoluje 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 typu string | number je chyba.
  • Kontrola typ zúží. Uvnitř if (typeof odmena === "string") { … } je odmena typu string; ve větvi else a pod podmínkou, která skončí příkazem return, je typu number. 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á let s textem má typ string, takže jí typ dejte, nebo použijte const. Místo enum používejte sjednocení literálů.
  • null a undefined patří 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, nebo undefined, když nevyhovuje žádný. Výsledek je typu Predmet | undefined: ošetřete oba případy a funkci, která hledá, dejte návratový typ Predmet | undefined.
  • hrdina.zbran?.nazev přečte nazev, jen když hrdina.zbran existuje, jinak dá undefined. hodnota ?? "náhrada" nahradí null a undefined, ale na rozdíl od || ne 0 ani "".
  • Array.isArray(korist) rozliší pole od jedné hodnoty, třeba u typu string | string[]. Dejte pozor na to, co funguje pro oba typy, jako length a for...of.
  • unknown přijme jakoukoli hodnotu, ale nedovolí s ní nic, dokud ji nezúžíte, třeba pomocí typeof. Pro data zvenku ho používejte místo any.
  • "leceni" in predmet zúží 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.

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

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

10/10