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> je Hrdina, ve kterém je každá vlastnost nepovinná. Hodí se na změny: function upravHrdinu(hrdina: Hrdina, zmeny: Partial<Hrdina>): Hrdina.
  • Omit<Hrdina, "id"> je Hrdina bez id a Pick<Hrdina, "jmeno" | "uroven"> má jen jmeno a uroven. Pick názvy kontroluje, Omit ne.
  • readonly string[], neboli ReadonlyArray<string>, je pole, které jde číst, ale ne měnit: žádné push, pop ani predmety[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í je Ukol["stav"] sjednocení všech stavů a Record<Ukol["stav"], number> má číslo pro každý z nich.
  • V typu je typeof zakladniSchopnosti typ proměnné: type Schopnosti = typeof zakladniSchopnosti;. JavaScriptový typeof v kódu dá za běhu text.
  • A & B je průnik: oba typy najednou, se všemi vlastnostmi obou: type Boss = Prisera & { faze: number };. A | B je 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ů.

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

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

Nebo se registrujte pomocí:

7/7