Предложението на ECMA ще донесе записи и кортежи в JavaScript

JavaScript ще получи типове стойности на записи и кортежи по предложение пред ECMA International, органът по стандартизация, който контролира популярния език за програмиране за уеб разработка.

Записите и кортежите ще въведат две дълбоко неизменяеми структури от данни в JavaScript: структура Record, подобна на обект, и структура Tuple, подобна на масив. Проект на плана с Технически комитет 39 на ECMA, който управлява ECMAScript, стандартът, в основата на който стои JavaScript.

Записите и кортежите, посочва предложението, могат да съдържат само примитиви и други записи и кортежи. Те могат да се разглеждат като „съставни примитиви“. И като се основават изцяло на примитиви, те са дълбоко неизменни. Подобно на обекти и масиви, записите и кортежите поддържат удобни идиоми за изграждане, използване и манипулация, се казва в предложението. Те се сравняват по съдържание, а не по идентичност.

Двигателите на JavaScript могат да извършват определени оптимизации на конструкцията, манипулацията и сравняването на записи и кортежи, аналогично на начина на изпълнение на низовете. Записите и кортежите са предназначени да бъдат използваеми и разбираеми с външни набори от системи тип, като TypeScript или Flow.

Понастоящем потребителските библиотеки като imutable.js прилагат подобни концепции. Предишно предложение на ECMA за неизменяеми структури от данни е било опитано, но изоставено поради сложността и липсата на достатъчно случаи на употреба, се посочва в предложението. Новото предложение въвежда значителни промени, предлагайки предимства за използваемост пред библиотеките на потребителските страни, като следното:

  • Записите и кортежите са лесно интроспектируеми в дебъгер.
  • Не е необходимо допълнително разклоняване, за да се напише обща библиотека, която консумира неизменяеми и JS обекти.
  • Избягват се случаи на използване, при които разработчиците могат скъпо да конвертират между обикновени JS обекти и неизменяеми структури.

Записите и кортежите си взаимодействат добре с обекти и масиви. Те могат да се четат по същия начин като обектите и масивите. Ключовата разлика се фокусира върху дълбоката неизменност и сравнение по стойност, а не върху идентичност. Също така, предложеният синтаксис значително подобрява ергономичността на използване Recordи Tupleв кода.

Най-новата версия на спецификацията ECMAScript, версия 2020, беше приета през юни. Той включваше възможности в области като зареждане на модули и нов BigIntтип.