Microsoft propone cambios importantes en JavaScript: que nos permita vincular las variables a un tipo de dato para evitar errores

Microsoft propone cambios importantes en JavaScript: que nos permita vincular las variables a un tipo de dato para evitar errores
7 comentarios

Suele describirse a JavaScript como un lenguaje de programación de "tipado débil y dinámico". Eso significa que, a la hora de declarar una variable, no definimos el tipo de dato que le corresponde (numérico, cadena de texto, booleano…), sino que se asigna automáticamente ("123" será una cadena de texto, mientras que 123 será un dato numérico), y además siempre podemos cambiarlo más adelante.

El problema de este comportamiento es que, aunque aporta más flexibilidad, y permite que un programa funcione escribiendo menos código, también se traduce en frecuentes errores en tiempo de ejecución no detectables previamente (por ejemplo, cuando pretendemos comparar u operar con números mezclando algunos tipados como strings).

Al final, eso nos obliga a castear constantemente para forzar el comportamiento deseado (al final, escribimos más código), y así evitar que nuestro código pueda resultar siendo inseguro.

Error
¿Te suena, programador de JavaScript?

Una propuesta para cambiar esto

Por ello, varios desarrolladores de Microsoft (compañía mantenedora de TypeScript, un superconjunto de JavaScript) han puesto sobre la mesa, respaldados por profesionales de otras empresas, una propuesta para introducir una sintaxis extra y opcional en JavaScript, que ofrezca la posibilidad de añadir al lenguaje anotaciones para precisar el tipo de dato.

Dichas anotaciones serían tratadas como meros comentarios por el motor de JavaScript (en resumen: los ignorarían) y, por lo tanto, no alterarían la forma en que se ejecuta el código circundante, pero podrían ser comprobadas por verificadores de tipo externos a JavaScript (por lo que usuarios de herramientas como TypeScript o Flow podrían hacer uso de ellas).

"Hoy en día, puede crear un archivo en su editor y comenzar a detallar tipos en forma de comentarios JSDoc:


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

[…] ¿Qué pasaría si pudiéramos tener algo como la sintaxis de TypeScript que [sin embargo] resultara totalmente ignorada, como si fueran comentarios, en JavaScript?


>function add(a: number, b: number) {
    return a + b;
}
Solución: tipar las variables utilizando anotaciones opcionales

Cambia
Antes y después.

Los autores de la propuesta quieren dejar claro no sólo lo que están presentando, sino también lo que no: "Nuestro equipo no propone introducir la verificación de tipos de TypeScript en todos los navegadores y tiempos de ejecución de JavaScript, ni proponemos que se implemente ningún nuevo verificador de tipos en el navegador.

"Creemos que hacer eso causaría problemas tanto para los usuarios de JavaScript como para los de TypeScript debido a una serie de desventajas, como el rendimiento en tiempo de ejecución, los problemas de compatibilidad con el código TypeScript existente y el riesgo de detener la innovación en el campo de la comprobación de tipos".

El objetivo de estos desarrolladores es poder presentar la propuesta este mismo mes al TC39, el comité de estándares ECMAscript: "esperamos cierto nivel de escepticismo; una propuesta como esta recibirá muchos comentarios y un escrutinio exhaustivo, puede implicar muchos cambios de diseño en el camino, y pueden pasar años antes de que produzca resultados".

Temas
Inicio