Literalhärledning
Literalhärledning är en funktion i TypeScript som gör att typen av en variabel eller parameter kan härledas baserat på dess värde.
I följande exempel kan vi se att TypeScript betraktar x som en literaltyp eftersom värdet inte kan ändras senare, medan y härleds som sträng eftersom det kan ändras när som helst.
const x = 'x'; // Literal type of 'x', because this value cannot be changedlet y = 'y'; // Type string, as we can change this valueI följande exempel kan vi se att o.x härleds som en string (och inte en literal av a) eftersom TypeScript anser att värdet kan ändras när som helst.
type X = 'a' | 'b';
let o = { x: 'a', // This is a wider string};
const fn = (x: X) => `${x}-foo`;
console.log(fn(o.x)); // Argument of type 'string' is not assignable to parameter of type 'X'Som du kan se ger koden ett fel när o.x skickas till fn eftersom X är en smalare typ.
Vi kan lösa detta problem genom att använda typbekräftelse med const eller typen X:
let o = { x: 'a' as const,};eller:
let o = { x: 'a' as X,};