any: vypnutá kontrola

TypeScript má typ, se kterým zmizí každá chybová hláška: any (anglicky „jakýkoli“). Proměnná typu any může obsahovat cokoli a TypeScript s ní dovolí cokoli: každou vlastnost, každou metodu, každou operaci. Prostě ji přestane kontrolovat:

let korist: any = "zlatá koruna";
console.log(korist.toUpperCase());
console.log(korist.toUppercase());

TypeScript nic neohlásí a program se spustí. Vypíše ZLATÁ KORUNA a pak spadne na překlepu:

TypeError: korist.toUppercase is not a function

Přesně před takovým chováním JavaScriptu vás má TypeScript chránit. S let korist: string = "zlatá koruna";, nebo jen s let korist = "zlatá koruna";, by TypeScript překlep našel ještě před spuštěním: Property 'toUppercase' does not exist on type 'string'. Did you mean 'toUpperCase'?

A any se šíří. Cokoli, co z hodnoty typu any přečtete, je také any, takže to TypeScript nekontroluje:

let korist: any = { nazev: "Zlatá koruna" };
const nazev = korist.nzev;
console.log(nazev.toUpperCase());

TypeScript zase nic neohlásí, ale za běhu je v proměnné nazev hodnota undefined a program spadne s chybou TypeError: Cannot read properties of undefined (reading 'toUpperCase').

K čemu tedy any je? Pomáhá, když se velký program převádí z JavaScriptu na TypeScript postupně, kousek po kousku. Potkáte ho i ve starším kódu. A láká ve chvíli, kdy vám chybová hláška překáží: hláška zmizí, ale chyba zůstane a projeví se, až program poběží. Proto se any vyhýbejte. Když opravdu nevíte, co bude v nějaké hodnotě, nabídne vám lekce 5 bezpečnou náhradu: unknown.

Když TypeScript nedokáže typ odvodit a musel by sám použít any, upozorní vás. Hlášky se slovy implicitly has … 'any', jako ta u prázdného pole ve cvičení o polích, znamenají, že typ sám odvodit nedokáže a že ho máte napsat.

Pokyny

Spusťte program: spadne s chybou TypeError. U proměnné poklad nahraďte any jejím skutečným typem, string. TypeScript teď chybu najde ještě před spuštěním programu: opravte ji. Program pak vypíše Kira nachází: ZLATÁ KORUNA, ale Kiřino zlato je podivných 120300.

U proměnné hodnota nahraďte any typem number. TypeScript teď ohlásí další chybu. Opravte ji, aby program vypsal:

Kira nachází: ZLATÁ KORUNA
Zlato: 420

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

8/9