Prijedlog ECMA-e donio bi zapise i korice na JavaScript

JavaScript bi stekao vrste zapisa i skup vrijednosti prema prijedlogu pred ECMA International, tijelom za standarde koje nadgleda popularni programski jezik za web razvoj.

Zapisi i korice uvodile bi dvije duboko nepromjenjive strukture podataka u JavaScript:, strukturu Recordnalik objektu i strukturu nalik Tuplena niz. Nacrt plana s ECMA-ovim tehničkim odborom 39, koji upravlja ECMAScriptom, standardom u osnovi JavaScript-a.

Zapisi i korice, navodi se u prijedlogu, mogu sadržavati samo primitive i ostale zapise i korice. O njima se može razmišljati kao o „složenim primitivcima“. I temeljito se temeljeći na primitivima, duboko su nepromjenjivi. Kao i objekti i nizovi, zapisi i korice podržavaju ugodne idiome za izgradnju, upotrebu i manipulaciju, navodi se u prijedlogu. Uspoređuju se prema sadržaju, a ne prema identitetu.

JavaScript motori mogu izvršiti određene optimizacije konstrukcije, manipulacije i usporedbe zapisa i korpica, analogno načinu na koji se implementiraju nizovi. Zapisi i korice namijenjeni su upotrebi i razumijevanju s vanjskim skupovima sustava tipa, kao što su TypeScript ili Flow.

Trenutno knjižnice korisničkih područja, poput imutable.js, primjenjuju slične koncepte. Prethodni prijedlog ECMA-e za nepromjenjive strukture podataka pokušan je, ali je napušten zbog složenosti i nedostatka dovoljnih slučajeva korištenja, navodi se u prijedlogu. Novi prijedlog uvodi značajne promjene, nudeći prednosti upotrebljivosti u odnosu na korisničke knjižnice, kao što su sljedeće:

  • Zapisi i korice lako se mogu pregledati u programu za otklanjanje pogrešaka.
  • Nije potrebno dodatno grananje za pisanje generičke biblioteke koja troši nepromjenjive i JS objekte.
  • Izbjegavaju se slučajevi upotrebe kada programeri mogu skupo pretvoriti između uobičajenih JS objekata i nepromjenjivih struktura.

Zapisi i korice dobro su u interakciji s objektima i nizima. Mogu se čitati na isti način kao i objekti i nizovi. Ključna razlika usredotočena je na duboku nepromjenjivost i usporedbu prema vrijednosti, a ne prema identitetu. Također, predložena sintaksa značajno poboljšava ergonomiju upotrebe Recordi Tuplekoda.

Najnovija verzija specifikacije ECMAScript, verzija 2020, usvojena je u lipnju. Sadržavao je mogućnosti u područjima poput učitavanja modula i novog BigInttipa.