Hoppa till innehåll

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 changed
let y = 'y'; // Type string, as we can change this value

I 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,
};