Programování

Návrh ECMA by přinesl záznamy a n-tice do JavaScriptu

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.