Typescript 4.4 giver bedre forgreninger med typer

Illustration: Version2
Forgreninger med typeinformation kan noget mere i ny version af det Javascript-agtige sprog.

En ny version af Typescript er på banen, som det hænder omkring hver anden måned eller deromkring.

Den største nyhed i Typescript 4.4 er nemmere forgreninger med typeinformation.

»I Javascript skal vi ofte undersøge en værdi på forskellige måder og gøre noget anderledes, når vi ved mere om dens type,« skriver udviklerne bag sproget i et blogindlæg.

Det kan se ud som i linje to i eksemplet herunder - en såkaldt 'type guard' - men det giver en fejl:

function foo(arg: unknown) {
    const argIsString = typeof arg === "string";
    if (argIsString) {
        console.log(arg.toUpperCase());
        //              ~~~~~~~~~~~
        // Error! Property 'toUpperCase' 
        // does not exist on type 'unknown'.
    }
}

I den forrige version af sproget opstår der en fejl - selvom argIsString tildeles værdien af ​​en type guard, mister Typescript denne oplysning. Det er ændret i den nye version, så det ovenstående eksempel virker som tilsigtet.

Flere slags type guards bevares - ikke kun typeof. Her er et eksempel med union-typer:

type Shape =
    | { kind: "circle", radius: number }
    | { kind: "square", sideLength: number };
 
function area(shape: Shape): number {
    const isCircle = shape.kind === "circle";
    if (isCircle) {
        // We know we have a circle here!
        return Math.PI * shape.radius ** 2;
    }
    else {
        // We know we're left with a square here!
        return shape.sideLength ** 2;
    }
}

Der er flere nyheder i Typescript 4.4, inklusive mange ydelsesforbedringer.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (0)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Log ind eller Opret konto for at kommentere