Čtení chybových hlášek

Chybové hlášky TypeScriptu vypadají všechny podobně, a když je umíte číst, řeknou vám hodně. Tento program má tři chyby:

const hrdina = { jmeno: "Kira", zivoty: 50 };
let lektvary = 2;

console.log("Životy:", hrdina.zivty);
console.log("Lektvary:", lektvray);
console.log("Šípy:", sipy);

TypeScript ohlásí všechny tři najednou, každou na samostatném řádku:

main.ts(4,31): error TS2551: Property 'zivty' does not exist on type '{ jmeno: string; zivoty: number; }'. Did you mean 'zivoty'?
main.ts(5,26): error TS2552: Cannot find name 'lektvray'. Did you mean 'lektvary'?
main.ts(6,22): error TS2304: Cannot find name 'sipy'.

Každý řádek čtěte zleva:

  • main.ts je soubor s chybou, tedy ten v editoru.
  • (4,31) je místo chyby: řádek 4, sloupec 31. Čísla řádků vidíte v editoru vlevo. Sloupec říká, kolikátý znak na řádku to je, počítáno od 1 i s mezerami. Písmeno s diakritikou, třeba Ž, se počítá jako jeden znak. TypeScript ukazuje na začátek toho, co je špatně, tady na první písmeno slova zivty.
  • error TS2551 říká, že jde o chybu, a TS2551 je její kód. Každý druh chyby má své číslo. Když vám hláška nebude jasná, vyhledejte její kód na internetu, třeba „TS2551“, a najdete vysvětlení i příklady.
  • Za dvojtečkou následuje anglický popis chyby. Property 'zivty' does not exist on type '{ jmeno: string; zivoty: number; }' znamená, že objekt nemá vlastnost zivty. V uvozovkách je typ objektu: objekt s vlastností jmeno, která je text (string), a s vlastností zivoty, která je číslo. TypeScript ho odvodil z objektu na řádku 1.

Když se chybný název podobá nějakému existujícímu, TypeScript přidá radu Did you mean 'zivoty'? (nemysleli jste zivoty?) a většinou je to správná oprava. Radí u vlastností (TS2551) i u proměnných: Cannot find name 'lektvray' (TS2552) znamená, že TypeScript žádnou proměnnou lektvray nezná, ale zná lektvary. Když se mu žádný existující název nepodobá, hláška zní jen Cannot find name 'sipy' (TS2304): program žádnou proměnnou sipy nemá. Možná jste ji zapomněli vytvořit, nebo jste ji pojmenovali jinak.

TypeScript zkontroluje celý program a ohlásí všechny typové chyby, které najde. Začněte vždy první z nich: opravte ji a program spusťte znovu. Jedna chyba totiž může způsobit několik hlášek. Když se překlepnete v názvu proměnné tam, kde ji vytváříte, ohlásí TypeScript chybu na každém řádku, který ji používá, a jediná oprava je všechny odstraní.

A naopak: po opravě se mohou objevit nové chyby. TypeScript totiž ještě před typy kontroluje, jestli je program správně zapsaný, se všemi závorkami a uvozovkami na svém místě. Když je něco takového špatně, ohlásí jen to a typy nekontroluje, dokud chybu neopravíte:

const hrdina = { jmeno: "Kira", zivoty: 50 };
console.log("Životy:", hrdina.zivoty;
main.ts(2,37): error TS1005: ')' expected.

')' expected znamená, že TypeScript tam, kde je středník, čekal ), protože závorka za console.log zůstala neuzavřená.

Pokyny

Program v editoru vítá Kiru v hostinci, ale má tři chyby. Spusťte ho: TypeScript ohlásí jen jednu z nich, chybu v zápisu programu. Opravte ji a program spusťte znovu. Teď TypeScript ukáže zbylé dvě. Opravte i ty, aby program vypsal:

Vítejte v hostinci U Zlatého poháru
Hostinský: Bruno
Kira si objedná polévku. Zbývá zlata: 105

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

3/7