Typescript 4.4 giver bedre forgreninger med typer

Typescript 4.4 giver bedre forgreninger med typer
Illustration: Version2.
Forgreninger med typeinformation kan noget mere i ny version af det Javascript-agtige sprog.
2. september 2021 kl. 10:28
errorÆldre end 30 dage
Manglende links i teksten kan sandsynligvis findes i bunden af artiklen.

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:

  1. function foo(arg: unknown) {
  2. const argIsString = typeof arg === "string";
  3. if (argIsString) {
  4. console.log(arg.toUpperCase());
  5. // ~~~~~~~~~~~
  6. // Error! Property 'toUpperCase'
  7. // does not exist on type 'unknown'.
  8. }
  9. }

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.

Artiklen fortsætter efter annoncen

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

  1. type Shape =
  2. | { kind: "circle", radius: number }
  3. | { kind: "square", sideLength: number };
  4.  
  5. function area(shape: Shape): number {
  6. const isCircle = shape.kind === "circle";
  7. if (isCircle) {
  8. // We know we have a circle here!
  9. return Math.PI * shape.radius ** 2;
  10. }
  11. else {
  12. // We know we're left with a square here!
  13. return shape.sideLength ** 2;
  14. }
  15. }

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

Ingen kommentarer endnu.  Start debatten
Debatten
Log ind for at deltage i debatten.
settingsDebatindstillinger