Shrnutí
V této lekci jste se naučili, že:
- Pomocné typy jsou generické typy zabudované v TypeScriptu, které z existujícího typu vyrobí nový. Kontroluje je jen TypeScript a z programu zmizí jako každý typ.
- Spread (JavaScript) zkopíruje vlastnosti objektu do nového objektu:
{ ...hrdina, uroven: 4 }. Vyhraje to, co je napsané později, takže v{ ...hrdina, ...zmeny }změny přepíšou staré hodnoty. V polích[...predmety, "Lano"]vytvoří nové pole s jedním prvkem navíc. Partial<Hrdina>jeHrdina, ve kterém je každá vlastnost nepovinná. Hodí se na změny:function upravHrdinu(hrdina: Hrdina, zmeny: Partial<Hrdina>): Hrdina.Omit<Hrdina, "id">jeHrdinabezidaPick<Hrdina, "jmeno" | "uroven">má jenjmenoauroven.Picknázvy kontroluje,Omitne.readonly string[], neboliReadonlyArray<string>, je pole, které jde číst, ale ne měnit: žádnépush,popanipredmety[0] = …. Funkce, která pole jen čte, má brát pole jen pro čtení; obyčejné pole se do něj vejde taky.Readonly<Hrdina>udělá jen pro čtení všechny vlastnosti.Hrdina["povolani"]je typ vlastnosti jiného typu, takže typ je napsaný jen jednou. U sjednocení jeUkol["stav"]sjednocení všech stavů aRecord<Ukol["stav"], number>má číslo pro každý z nich.- V typu je
typeof zakladniSchopnostityp proměnné:type Schopnosti = typeof zakladniSchopnosti;. JavaScriptovýtypeofv kódu dá za běhu text. A & Bje průnik: oba typy najednou, se všemi vlastnostmi obou:type Boss = Prisera & { faze: number };.A | Bje jeden, nebo druhý.
V příští lekci, Závěrečný projekt, spojíte celý kurz dohromady a krok za krokem naprogramujete Kiřin inventář a deník úkolů.
Jak psát:
Pokyny
Teď si vše procvičte. V editoru je Kiřina kniha kouzel. Když se Kira naučí nové kouzlo, stará kniha se změnit nesmí: funkce vrátí novou. Napište funkci naucKouzlo(kniha: readonly Kouzlo[], kouzlo: Omit<Kouzlo, "id">): Kouzlo[], která vrátí nové pole: všechna kouzla z kniha a na konci nové kouzlo s id: kniha.length + 1. Použijte dvakrát spread, pro pole i pro kouzlo.
Napište funkci kouzlaSkoly(kniha: readonly Kouzlo[], skola: Kouzlo["skola"]): string[], která vrátí v poli názvy kouzel jedné školy. Stačí cyklus for...of s push, nebo filter a map.
Pod funkcemi uložte naucKouzlo(knihaKouzel, { nazev: "Ledové kopí", skola: "led", mana: 4 }) do konstanty novaKniha. Pak vypište kouzlaSkoly(novaKniha, "led") a kouzlaSkoly(knihaKouzel, "led"). Stará kniha se nezměnila:
["Mrazivá vlna", "Ledové kopí"]
["Mrazivá vlna"]Začněte programovat zdarma
7/7