Odvozování literálových typů
Odvozování literálových typů je funkce TypeScriptu, která umožňuje odvodit typ proměnné nebo parametru na základě jeho hodnoty.
V následujícím příkladu vidíme, že TypeScript považuje x za literálový typ, protože hodnotu již později nelze změnit, zatímco u y odvodí typ string, protože ji lze později kdykoli upravit.
const x = 'x'; // Literálový typ 'x', protože tuto hodnotu nelze změnitlet y = 'y'; // Typ string, protože tuto hodnotu lze změnitV následujícím příkladu vidíme, že typ o.x byl odvozen jako string (a nikoli jako literál a), protože TypeScript předpokládá, že hodnotu lze později kdykoli změnit.
type X = 'a' | 'b';
let o = { x: 'a', // Toto je širší typ string};
const fn = (x: X) => `${x}-foo`;
console.log(fn(o.x)); // Argument typu 'string' nelze přiřadit parametru typu 'X'Jak vidíte, kód při předání o.x do fn vyvolá chybu, protože X je užší typ.
Tento problém můžeme vyřešit přetypováním pomocí const nebo typu X:
let o = { x: 'a' as const,};nebo:
let o = { x: 'a' as X,};