Respuesta también disponible en Quora: ¿Qué tan bueno es TypeScript sobre JavaScript?

Primero, Typescript agrega un sistema opcional de tipos (type system) sobre Javascript.

En segundo lugar, los tipos tienen una capacidad comprobada para mejorar la calidad del código, la comprensión del mismo y la capacidad de mantenimiento. Especialmente en grandes bases de código. Por ejemplo, fíjate en el slogan de Typescript: Javascript que escala (JavaScript that scales)*.

Aquí puede observar una ventaja de cómo Typescript (en este caso) puede contribuir a tu “eficiencia de código JS” proporcionándote algún tipo de abstracción y paradigmas como OOP (programación orientada a objetos **) programación funcional (al igual que JS), genéricos, interfaces, verificación de tipos, inferencia de tipos, herramientas de desarrollo, linting, depuración, etc.

Conclusión:

Personalmente, recomendaría usar Typescript para escribir el código del navegador. Por supuesto, también puede usarlo para “transpilar” código JS y ejecutarlo con NodeJS. Pero si quieres un verdadero lenguaje de sistema de tipado estricto para escribir el código de tu próximo servidor, yo te recomendaría usar otras alternativas mucho mejores y más eficientes como pueden ser Go, Rust, Java o similares.


* Por supuesto, esto no significa que sólo convirtiendo sus archivos .js en .ts obtendrás el preciado *“código eficiente” *como por arte de magia. Hay muchas implicaciones porque “eficiencia de código” es un término amplio que se utiliza para describir la fiabilidad, la velocidad y la metodología de programación utilizada en el desarrollo de códigos para una aplicación. Recuerda que los lenguajes de programación son sólo herramientas que los programadores usan para lograr sus objetivos de software. Esto significa que un lenguaje de programación en sí mismo será inútil o ineficiente sin un programador que sepa cómo usarlo correctamente. Por lo tanto, la “eficiencia del código” va mas allá de la simple decisión de utilizar Typescript en favor de otro. También hay fuertes implicaciones de parte del programador.

** JS no es un lenguaje orientado a objetos, es más bien algo como un lenguaje orientado a prototipos (prototyping). Es por eso que se recomienda, por ejemplo, composición sobre “herencia” al usar clases. Clases en JS son sólo prototipos.

Recursos: