První typová chyba

V JavaScriptu může proměnná obsahovat cokoli a to, co v ní je, se může kdykoli změnit z čísla na text:

let zivoty = 3;
console.log("Životy:", zivoty);
zivoty = "tři";
console.log("Životy:", zivoty);

V kurzu JavaScriptu by tento program vypsal Životy: 3 a Životy: tři a nic by nevypadalo špatně. Potíže by přišly až později: jakmile by hra začala se životy počítat, třeba zivoty - 1, vyšlo by NaN.

TypeScript tento program nespustí. Místo toho ukáže chybu:

main.ts(3,1): error TS2322: Type 'string' is not assignable to type 'number'.

Co se stalo? Na řádku 1 dostala proměnná zivoty hodnotu 3, tedy číslo. Podle toho TypeScript usoudil, že v proměnné zivoty budou čísla: jejím typem je number (číslo). Od té chvíle kontroluje každou hodnotu, kterou do ní program ukládá. Na řádku 3 se do ní program snaží uložit "tři", a to je text. Typ textu se v TypeScriptu jmenuje string (textový řetězec), stejně jako ho nazývá typeof v JavaScriptu. Hláška říká právě tohle: typ string nelze přiřadit (anglicky assign) k typu number, takže text nejde uložit do proměnné pro čísla. Trojka v main.ts(3,1) je číslo řádku s chybou. Všechny části hlášky se naučíte číst v příštím cvičení.

Všimněte si, že program nevypsal vůbec nic, ani Životy: 3 z řádku 2, přestože ten je v pořádku. TypeScript zkontroluje celý program dřív, než se spustí, a když najde jakoukoli typovou chybu, neprovede se nic. V JavaScriptu se většina chyb projevila až ve chvíli, kdy na ně program narazil, a co do té doby vypsal, zůstalo ve výstupu. TypeScript program nespustí, dokud neopravíte všechny typové chyby.

Může to vypadat přísně, ale právě v tom je TypeScript užitečný. Chybu ohlásí hned, na řádku, kde opravdu je, a ne až jako podivné NaN někde o kus dál nebo jako špatný výsledek, kterého si nikdo nevšimne.

Proměnná si svůj typ ponechá po celý program, ale její hodnota se měnit může, pokud má nová hodnota stejný typ: zivoty = 2; je v pořádku. Pozor ale na uvozovky: zivoty = "2"; je také chyba, protože "2" v uvozovkách je text, ne číslo.

Pokyny

Program v editoru počítá Kiřino zlato a lektvary v obchodě, ale TypeScript ho nespustí. Klikněte na Spustit a přečtěte si chybovou hlášku. Pak opravte řádek s chybou: Kira si koupila ještě jeden lektvar, takže teď má 3, a lektvary musí zůstat číslem. Program pak vypíše:

Zlato: 120 Lektvary: 2
Zlato: 90 Lektvary: 3

Před dalším soubojem Kira jeden lektvar vypije. Na konci programu snižte lektvary o 1 příkazem lektvary = lektvary - 1; a vypište stejný řádek ještě jednou, aby program vypsal:

Zlato: 120 Lektvary: 2
Zlato: 90 Lektvary: 3
Zlato: 90 Lektvary: 2

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/7