Hamburger Icon
Microsoft propone una sintaxis tipada en JavaScript

Microsoft propone una sintaxis tipada en JavaScript

Desde Microsoft han propuesto oficialmente una sintaxis tipada para JavaScript. Esta sintaxis no cambiaría en nada cómo usamos JavaScript y su uso sería totalmente opcional.

Si no sabes muy bien en qué consiste esto del tipado, puedes mirar la serie de artículos de TypeScript que preparé hace un tiempo que te servirán como introducción y te podrás hacer una idea de lo que consigues con ello.

Vamos a ver los motivos de Microsoft para dar este paso y en qué consiste su propuesta.

Motivos

Desde Microsoft argumentan que hay una tendencia alcista en la demanda de tipado estático en el mundo de JavaScript. Si revisamos el State of JS de años recientes, así es. Si además sumamos que la adopción de TypeScript es cada vez mayor, pues parece normal que algunas de sus características empiecen a florecer en JavaScript.

En JavaScript nativo no podemos tipar variables y decirle al navegador que lo interprete, necesitamos usar una herramienta como TypeScript y compilar el código a algo que el navegador pueda interpretar. Desde Microsoft quieren ahorrarnos este paso intermedio, para así poder tipar en JavaScript con una sintaxis que sea ignorada, como si fueran comentarios, y que podamos programar con las ventajas que aporta TypeScript sin necesidad de compilar posteriormente el código para que sea compatible con el intérprete de JavaScript.

Actualmente ya existen la comentarios JSDoc, que permiten hacer algo así:

/**
 * @param a {number}
 * @param b {number}
 */
function add(a, b) {
  return a + b
}

Pero esto puede llegar a ser un poco engorroso en aplicaciones con bastante complejidad. El caso es que al ser comentarios no afectan en cómo se ejecuta el código, simplemente es una forma de documentación y chequeo durante el desarrollo. En bases de código pequeñitas puede que sea suficiente, pero a partir de cierto punto quizás ya no sea un mecanismo tan amigable.

¿Cómo sería la sintaxis?

La propuesta de Microsoft va de tener algo que nos dé las ventajas de usar un sistema de comentarios como JSDoc, pero en el propio código. Añadir sintaxis TypeScript que sea ignorada en el momento de interpretar el código. Algo como esto:

function add(a: number, b: number) {
  return a + b
}

La idea principal aquí es que el tipado no importa en el momento de ejecución del código, solo importa mientras desarrollamos. Esta propuesta añade sintaxis que permite a herramientas como TypeScript validar el código que introducimos pero que es ignorada por los navegadores. Además, nos ahorramos el paso de compilación necesario actualmente si se usa TypeScript, ya que los ficheros .ts tienen que compilarse a JavaScript a través de herramientas como Babel.

Para poder conseguir esto, la propuesta indica cómo JavaScript podria dar soporte a sintaxis de tipado en variables y funciones, declaraciones tipadas con interface o type y otras funciones que tenemos en TypeScript. Todo ello, sin afectar en absoluto en cómo se ejecuta el código JavaScript.

Presentación de la propuesta al TC39

Esta es una propuesta en estado 0, que se presentará al TC39 durante marzo de 2022. En caso de que se alcance la fase 1, significará que el comité reconoce que merece la pena considerar esta propuesta para que forme parte de ECMAScript.

Esta propuesta seguramente no sea bien recibida por todos y probablemente necesite muchos cambios en su diseño. En caso de que finalmente se decida pasar a fase 1, pueden pasar años hasta que llegue a formar parte de ECMAScript, pero sinceramente creo que esto debería de suceder.

El tipado estático ya ha demostrado que a la larga es beneficioso, además de que en ningún caso nadie tiene obligación de usarlo. Esto solo haría a este lenguaje un poco más fuerte de lo que ya es.

Si quieres puedes consultar la noticia original de Microsoft o el repositorio de la propuesta para seguir su evolución.