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 jakoPrisera { 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
newa dostane jeho argumenty:constructor(jmeno: string) { this.jmeno = jmeno; }. Uvnitř jethisnový objekt. Zkrácený zápisconstructor(public jmeno: string)tady není dovolený (TS1294). - Metody jsou funkce ve třídě:
popis(): string { return this.jmeno; }, volané jakokira.popis(). Uvnitř metody jethisobjekt před tečkou. Bezthis.TypeScript ohlásí TS2663. - Vlastnost označená
privatese smí používat jen uvnitř třídy (jinde TS2341), cestou dovnitř jsou metody. Bezprivateje vlastnost nebo metoda veřejná (public). Vlastní soukromé vlastnosti JavaScriptu začínají znakem#. - Vlastnost označená
readonlydostane hodnotu jen jako počáteční hodnotu nebo v konstruktoru (jinde TS2540). class Carodej implements Postavanechá 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 Priserazdědí vlastnosti a metody třídyPrisera. Jeho konstruktor musí nejdřív zavolatsuper(…)(TS2377).Bossse hodí všude, kde se čekáPrisera.- Odvozená třída může metodu přepsat:
override popis(): string. DíkyoverrideTypeScript zkontroluje, že rodič takovou metodu má (TS4117), asuper.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ší.
Jak psát:
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ětloZačněte programovat zdarma
9/9