Programmering

ECMA-forslag ville bringe journaler og tupler til JavaScript

JavaScript ville få rekord- og dobbeltværdityper under et forslag for ECMA International, standardorganet, der fører tilsyn med det populære programmeringssprog til webudvikling.

Records og tuples ville introducere to dybt uforanderlige datastrukturer til JavaScript: Optage, en objektlignende struktur, og Tuple, en array-lignende struktur. Et udkast til planen med ECMA Technical Committee 39, som styrer ECMAScript, den standard, der ligger til grund for JavaScript.

Optegnelser og tupler, ifølge forslaget, kan kun indeholde primitiver og andre poster og tupler. De kan betragtes som "sammensatte primitiver." Og ved at være grundigt baseret på primitiver er de dybt uforanderlige. Ligesom objekter og arrays understøtter optegnelser og tupler behagelige udtryk til konstruktion, brug og manipulation, hedder forslaget. De sammenlignes med indhold snarere end efter identitet.

JavaScript-motorer udfører muligvis visse optimeringer ved konstruktion, manipulation og sammenligning af poster og tupler, analogt med hvordan strenge implementeres. Optegnelser og tupler er beregnet til at være anvendelige og forstås med eksterne supersæt som TypeScript eller Flow.

I øjeblikket implementerer brugerlandsbiblioteker som immutable.js lignende koncepter. Et tidligere ECMA-forslag til uforanderlige datastrukturer blev forsøgt, men opgivet på grund af kompleksitet og mangel på tilstrækkelige anvendelsestilfælde, hedder det i forslaget. Det nye forslag introducerer væsentlige ændringer, hvilket giver fordelene ved brugervenlighed i forhold til brugerlandsbiblioteker, såsom følgende:

  • Optegnelser og tupler er let introspektable i en debugger.
  • Ingen yderligere forgrening er nødvendig for at skrive et generisk bibliotek, der bruger uforanderlige og JS-objekter.
  • Brugstilfælde undgås, hvor udviklere dyrt kan konvertere mellem almindelige JS-objekter og uforanderlige strukturer.

Optegnelser og tupler fungerer godt sammen med objekter og arrays. De kan læses på samme måde som objekter og arrays. Hovedforskellen centrerer sig om dyb uforanderlighed og sammenligning efter værdi snarere end identitet. Den forbedrede syntaks forbedrer også ergonomien ved brug Optage og Tuple i kode.

Den seneste version af ECMAScript-specifikationen, version 2020, blev vedtaget i juni. Det indeholdt funktioner inden for områder som modulindlæsning og et nyt BigInt type.