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áškouCannot 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.
Jak psát:
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ýchZačněte programovat zdarma
2/10