JavaScript by na základě návrhu před ECMA International, orgánem pro standardy, který dohlíží na populární programovací jazyk pro vývoj webů, získal typy záznamů a tuple.
Záznamy a n-tice by do JavaScriptu zavedly dvě hluboce neměnné datové struktury: Záznam
, objektová struktura a Tuple
, struktura podobná poli. Návrh plánu s technickou komisí ECMA 39, která řídí ECMAScript, standardní podkladový JavaScript.
Záznamy a n-tice, uvádí návrh, mohou obsahovat pouze primitiva a další záznamy a n-tice. Mohou být považováni za „složené primitivy“. A tím, že jsou důkladně založeni na primitivech, jsou hluboce neměnní. Stejně jako objekty a pole podporují záznamy a n-tice pohodlné idiomy pro konstrukci, použití a manipulaci, uvádí návrh. Jsou srovnávány spíše podle obsahu než podle identity.
Stroje JavaScriptu mohou provádět určité optimalizace konstrukce, manipulace a porovnání záznamů a n-tic, analogicky s implementací řetězců. Záznamy a n-tice jsou zamýšleny tak, aby byly použitelné a srozumitelné s externími sadami systémů externího typu, jako jsou TypeScript nebo Flow.
V současné době knihovny uživatelských zemí, jako je například immutable.js, implementují podobné koncepty. Byl učiněn pokus o předchozí návrh neměnných datových struktur ECMA, ale byl zrušen kvůli složitosti a nedostatku případů dostatečného použití, uvádí se v návrhu. Nový návrh zavádí významné změny a nabízí výhody použitelnosti oproti knihovnám uživatelských zemí, jako jsou následující:
- Záznamy a n-tice jsou snadno vyhledatelné v debuggeru.
- K zápisu obecné knihovny, která spotřebovává neměnné objekty a objekty JS, není potřeba žádné další větvení.
- Vyhýbáme se případům použití, kdy vývojáři mohou nákladně převádět mezi běžnými objekty JS a neměnnými strukturami.
Záznamy a n-tice dobře spolupracují s objekty a poli. Lze je číst stejným způsobem jako objekty a pole. Klíčový rozdíl se soustředí spíše na hlubokou neměnnost a srovnání podle hodnoty než podle identity. Navrhovaná syntaxe také výrazně zlepšuje ergonomii používání Záznam
a Tuple
v kódu.
Nejnovější verze specifikace ECMAScript, verze 2020, byla přijata v červnu. To představovalo schopnosti v oblastech, jako je načítání modulů a nové BigInt
typ.