La propuesta de ECMA llevaría registros y tuplas a JavaScript

JavaScript obtendría tipos de valores de registro y tupla bajo una propuesta ante ECMA International, el organismo de estándares que supervisa el popular lenguaje de programación para el desarrollo web.

Los registros y las tuplas introducirían dos estructuras de datos profundamente inmutables en JavaScript: Recorduna estructura similar a un objeto y Tupleuna estructura similar a una matriz. Un borrador del plan con el Comité Técnico 39 de ECMA, que gobierna ECMAScript, el JavaScript subyacente estándar.

Los registros y tuplas, establece la propuesta, solo pueden contener primitivas y otros registros y tuplas. Pueden considerarse como "primitivos compuestos". Y al estar completamente basados ​​en primitivos, son profundamente inmutables. Al igual que los objetos y las matrices, los registros y las tuplas admiten modismos cómodos para la construcción, el uso y la manipulación, afirma la propuesta. Se comparan por contenido más que por identidad.

Los motores de JavaScript pueden realizar ciertas optimizaciones en la construcción, manipulación y comparación de registros y tuplas, de forma análoga a cómo se implementan las cadenas. Los registros y las tuplas están pensados ​​para que se puedan utilizar y comprender con superconjuntos de sistemas de tipos externos, como TypeScript o Flow.

Actualmente, las bibliotecas de espacio de usuario como immutable.js implementan conceptos similares. Se intentó una propuesta anterior de ECMA para estructuras de datos inmutables, pero se abandonó debido a la complejidad y la falta de suficientes casos de uso, afirma la propuesta. La nueva propuesta introduce cambios significativos, ofreciendo ventajas de usabilidad sobre las bibliotecas de usuario como las siguientes:

  • Los registros y las tuplas son fácilmente introspectables en un depurador.
  • No se necesitan ramificaciones adicionales para escribir una biblioteca genérica que consume objetos JS e inmutables.
  • Se evitan los casos de uso en los que los desarrolladores pueden realizar conversiones costosas entre objetos JS normales y estructuras inmutables.

Los registros y las tuplas interoperan bien con objetos y matrices. Se pueden leer de la misma forma que los objetos y las matrices. La diferencia clave se centra en la inmutabilidad profunda y la comparación por valor más que por identidad. Además, la sintaxis propuesta mejora significativamente la ergonomía de uso Recordy Tupleen el código.

La versión más reciente de la especificación ECMAScript, versión 2020, se adoptó en junio. Presentaba capacidades en áreas como carga de módulos y un nuevo BigInttipo.