Typové aliasy

Psát { jmeno: string; zivoty: number } u každé proměnné, parametru a pole, ve kterém je hrdina, je zdlouhavé. A až hrdinové dostanou novou vlastnost, museli byste to všude měnit. Místo toho typ pojmenujte pomocí slova type, které jste v minulé lekci použili u typů funkcí:

type Hrdina = { jmeno: string; zivoty: number };

function popisHrdinu(hrdina: Hrdina): string {
    return `${hrdina.jmeno} (${hrdina.zivoty} životů)`;
}

const kira: Hrdina = { jmeno: "Kira", zivoty: 50 };
const druzina: Hrdina[] = [kira, { jmeno: "Bruno", zivoty: 65 }];

for (const hrdina of druzina) {
    console.log(popisHrdinu(hrdina));
}

Vypíše:

Kira (50 životů)
Bruno (65 životů)

type Hrdina = ...; vytvoří typový alias: Hrdina je teď jiný název pro { jmeno: string; zivoty: number }. Můžete ho použít všude, kam patří typ: u proměnných (kira: Hrdina), parametrů (hrdina: Hrdina), návratových typů i polí (Hrdina[] je pole hrdinů). Když se typ změní, změníte ho na jednom místě.

Názvy typů se podle zvyklosti píšou s velkým písmenem na začátku (Hrdina, KouzelnyPredmet), takže je hned rozeznáte od proměnných, které začínají malým. Programátoři typy obvykle píšou na začátek programu.

Chybové hlášky teď používají název typu, a jsou proto kratší:

type Hrdina = { jmeno: string; zivoty: number };

const kira: Hrdina = { jmeno: "Kira", zivoty: 50 };
console.log(kira.zlato);
main.ts(4,18): error TS2339: Property 'zlato' does not exist on type 'Hrdina'.

Typový alias existuje jen pro TypeScript. Jako každý typ zmizí z JavaScriptu, který se spustí. type Hrdina proto žádného hrdinu nevytvoří, jen popisuje, jak hrdina vypadá.

Typické chyby:

  • Chybějící rovnítko: type Predmet { nazev: string; cena: number }; skončí hláškou '=' expected.
  • Jinak napsaný název. Na velikosti písmen v názvech typů záleží stejně jako u proměnných: const mec: predmet = ... skončí hláškou Cannot find name 'predmet'. Did you mean 'Predmet'?
  • Dva aliasy se stejným názvem: Duplicate identifier 'Predmet'. Každý název typu smíte použít jen jednou.

Pokyny

Na začátku programu vytvořte typový alias Predmet pro { nazev: string; cena: number }. Pak ho použijte na všech třech místech místo dlouhého typu.

Pod štít vytvořte pole vyloha typu Predmet[] se třemi předměty: mec, stit a novou lucernou { nazev: "Lucerna", cena: 15 }.

Dva řádky s console.log na konci nahraďte cyklem for...of přes vyloha, který vypíše cenovku každého předmětu. Program vypíše:

Stříbrný meč: 120 zlatých
Dubový štít: 45 zlatých
Lucerna: 15 zlatých

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

2/10