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 functionPř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.
Jak psát:
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: 420Začněte programovat zdarma
8/9