Shrnutí

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

  • Třída je šablona pro objekty: class Prisera { jmeno: string = "Skřet"; }. new Prisera() vytvoří instanci, která se vypíše jako Prisera { jmeno: "Skřet" }. Název třídy je zároveň typ: function zasahni(prisera: Prisera).
  • Každá vlastnost potřebuje hodnotu, počáteční nebo z konstruktoru, jinak přijde chyba TS2564.
  • Konstruktor se spustí při new a dostane jeho argumenty: constructor(jmeno: string) { this.jmeno = jmeno; }. Uvnitř je this nový objekt. Zkrácený zápis constructor(public jmeno: string) tady není dovolený (TS1294).
  • Metody jsou funkce ve třídě: popis(): string { return this.jmeno; }, volané jako kira.popis(). Uvnitř metody je this objekt před tečkou. Bez this. TypeScript ohlásí TS2663.
  • Vlastnost označená private se smí používat jen uvnitř třídy (jinde TS2341), cestou dovnitř jsou metody. Bez private je vlastnost nebo metoda veřejná (public). Vlastní soukromé vlastnosti JavaScriptu začínají znakem #.
  • Vlastnost označená readonly dostane hodnotu jen jako počáteční hodnotu nebo v konstruktoru (jinde TS2540).
  • class Carodej implements Postava nechá TypeScript zkontrolovat, že třída má všechno, co rozhraní požaduje (TS2420). TypeScript porovnává tvary, takže rozhraní odpovídá každý objekt správného tvaru.
  • class Boss extends Prisera zdědí vlastnosti a metody třídy Prisera. Jeho konstruktor musí nejdřív zavolat super(…) (TS2377). Boss se hodí všude, kde se čeká Prisera.
  • Odvozená třída může metodu přepsat: override popis(): string. Díky override TypeScript zkontroluje, že rodič takovou metodu má (TS4117), a super.popis() zavolá verzi rodiče.

V příští lekci, Pomocné typy, budete z typů, které už máte, vytvářet nové: hrdinu, jehož vlastnosti jsou všechny nepovinné, hrdinu bez identifikátoru a další.

Pokyny

Teď si vše procvičte. Kira nosí v brašně různé věci, které jdou všechny použít. Rozhraní pro ně je v editoru. Napište třídu Lektvar, která implementuje rozhraní Predmet. Má vlastnost jen pro čtení jmeno a soukromou vlastnost davky (číslo), obě nastavené v konstruktoru. Její metoda pouzij() vrátí `${jmeno} je prázdný`, když už žádné dávky nezbývají. Jinak jednu dávku ubere a vrátí `${jmeno}, zbývá dávek: ${davky}`, třeba Léčivý lektvar, zbývá dávek: 1.

Vytvořte const lektvar = new Lektvar("Léčivý lektvar", 2); a použijte lektvar třikrát. Pokaždé vypište, co pouzij() vrátí:

Léčivý lektvar, zbývá dávek: 1
Léčivý lektvar, zbývá dávek: 0
Léčivý lektvar je prázdný

Napište druhou třídu, Svitek, která také implementuje Predmet. Má vlastnosti jen pro čtení jmeno a kouzlo, obě nastavené v konstruktoru, a její pouzij() vrátí `${jmeno}: sesíláte kouzlo ${kouzlo}`. Pak dejte nový lektvar a svitek do brašny, const brasna: Predmet[] = [new Lektvar("Lektvar many", 1), new Svitek("Svitek světla", "Světlo")];, a v cyklu for...of použijte všechno, co v brašně je, a vypište výsledky. Program vypíše:

Léčivý lektvar je prázdný
Lektvar many, zbývá dávek: 0
Svitek světla: sesíláte kouzlo Světlo

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

9/9