5 USOS DE TYPESCRIPT que no conoces

💡 TypeScript sirve para mucho más que el desarrollo de clientes web en React, Vue o Angular.

Estos son los 5 usos de TypeScript que no conocías.

Categorías
Desarrollo web

¿Para qué sirve TypeScript?

¿Estás barajando aprender TypeScript o ya lo utilizas para desarrollar páginas web? Si te encuentras en cualquiera de estas 2 situaciones, te resultará interesante conocer algunos de los casos de uso más importantes de este versátil lenguaje de programación que sirve para mucho más que construir sitios web.

YouTube player

TypeScript, el superset que añade tipado estático a JavaScript, tiene en la actualidad una de las mayores comunidades dentro del sector. Y hasta me atrevería a decir que es el lenguaje de programación más utilizado en todo el mundo.

El principal responsable del uso tan extendido de TypeScript es sin duda el desarrollo frontend web en React, Angular, Vue y otros muchos frameworks. Pero las incontables librerías de código que existen para el lenguaje que aportan funcionalidades y que permiten integrarlo con otros sistemas, lo han convertido en un lenguaje de programación que podemos utilizar casi para cualquier cosa.

Soy Carlos Sala, desarrollador de software, y esta vez os traigo 5 casos de uso de TypeScript  que no conocías para convencerte, si aún no lo estás, de que tienes que aprender TypeScript.

#1 – Desarrollo backend web con TypeScript

¿Te imaginas ser desarrollador fullstack utilizando un solo lenguaje de programación?

Frodo de El señor de los anillos con el anillo único.

Además del frontend también puedes programar servidores web utilizando TypeScript. Esto lo convierte en uno de los mejores candidatos a primer lenguaje para iniciarse en la programación, ya que puedes aprender TypeScript, explorar el frontend y el backend al mismo tiempo y desarrollar páginas web completas sin cerrar ninguna puerta. Por si en un futuro decidieses especializarte en el desarrollo del cliente o del servidor.

Frameworks de Node.js en TypeScript

A la hora de programar un servidor web en TypeScript existen muchos frameworks que funcionan sobre Node.js con diferentes características entre los que podemos elegir. Algunos de los más conocidos son: Express.js, NestJS o LoopBack. Estos frameworks nos permiten crear rutas HTTP para formar una API Rest o un microservicio.

Maneja la base de datos con TypeScript

¿Y la conexión a base de datos?

¿Para eso si que hay que aprender un lenguaje de consulta como SQL, no?

Pues en realidad también podríamos usar TypeScript para esa tarea, haciendo uso de un ORM para no tener que escribir consultas SQL, en el caso de utilizar una base de datos relacional.

Otra opción es utilizar una base de datos no relacional como MongoDB con la que podemos interactuar directamente en TypeScript.

Desarrollo Fullstack en TypeScript

Como ves, puestos a reciclar los conocimientos que tenemos, podríamos construir una web desde el cliente hasta el servidor sabiendo únicamente TypeScript.

Tanque representando a TypeScript como lenguaje de programación de uso general.

Este es uno de los motivos que hacen tan atractivo a este lenguaje de programación para las empresas, ya que les permite encontrar nuevos trabajadores más fácilmente y pueden hacerlos rotar en diferentes posiciones dentro de la compañía sin que tengan que aprender otros lenguajes de programación.

En el caso de que seas un desarrollador freelance, las ventajas son bastante obvias también. Es más fácil escribir y reutilizar código si usamos todo el tiempo el mismo lenguaje de programación a tener que ir cambiando de uno a otro entre cliente y servidor.

#2 – Desarrollo de aplicaciones móviles con TypeScript

¿Y qué hay de las aplicaciones móviles?

¿Existe alguna forma de escribir código TypeScript que posteriormente pueda ser distribuido, instalado y ejecutado en Android e iOS?

Pues afortunadamente sí y principalmente podemos seguir 2 aproximaciones para conseguirlo.

Desarrollo de aplicaciones híbridas con TypeScript

La primera, y más fácil de entender si vienes del desarrollo web, es desarrollar aplicaciones híbridas. Una aplicación híbrida es, en pocas palabras, una aplicación web que podemos instalar en nuestro móvil o tablet escrita en HTML, CSS y TypeScript; con un diseño de interfaz de usuario bien adaptado a pantallas móviles.

3 personajes construyendo una aplicación móvil con bloques.

Cada vez que abrimos la aplicación híbrida desde nuestro dispositivo, un navegador web liviano ejecuta de forma transparente el proyecto, dando la impresión de que se trata de una aplicación nativa. Aunque en realidad, cuando estemos programando encontraremos las mismas limitaciones que en cualquier desarrollo web.

Para empaquetar nuestra aplicación web como si fuera una nativa, deberemos utilizar una solución como Capacitor o Cordova. Estas tecnologías te permitirán además acceder a funcionalidades nativas del dispositivo a través de plugins que podemos instalar. Aunque no os voy a engañar, cada vez que intento implementar un comportamiento nativo como mostrar una splash screen animada en aplicaciones híbridas tengo un millón de problemas o glitches hasta que consigo algo parecido a lo que pretendía.

Así que a mí personalmente no me convencen las aplicaciones híbridas, pero es cierto que puede ser la opción más sencilla si vienes del desarrollo web.

Desarrollo de aplicaciones con React Native

Y la segunda opción para desarrollar aplicaciones móviles en TypeScript es utilizar Expo y React Native. Que a mí me parece la mejor tecnología disponible a día de hoy para desarrollar aplicaciones Android e iOS con un único código fuente.

Captura de la página de inicio de la web de React Native.

Hay gente que prefiere Flutter o Xamarin y yo lo respeto, pero a mí me parece más atractivo React Native. Sobre todo porque te permite desarrollar en TypeScript, que a día de hoy cualquier programador lo conoce.

Con React Native escribes tu código una vez en TypeScript, de forma casi idéntica a React, y ya lo tienes disponible en todas las plataformas. Además lo más interesante es que el código resultante es código nativo para Android e iOS que da lugar a interfaces más fluidas de las que puedes conseguir con las aplicaciones híbridas en HTML.

En cuanto a la ejecución de APIs nativas en React Native, es posible acceder a través de librerías y si lo necesitamos también podemos fabricar nuestros propios módulos en Java, Swift o C++ para crear funcionalidades personalizadas.

#3 – Desarrollo de interfaces de línea de comandos (CLI) en TypeScript

¿Alguna vez has programado una interfaz de línea de comandos o CLI?

Menú de opciones de la CLI de VUE en TypeScript.

No todo el mundo lo sabe, pero TypeScript es muy eficaz cuando lo que queremos es desarrollar una aplicación de terminal. Soluciones como Commander.js facilitan el desarrollo de CLIs de cualquier complejidad, que finalmente podremos ejecutar con el comando Node en nuestra máquina.

node ./examples/pizza

Las interfaces de línea de comandos son útiles para distribuir un conjunto de funcionalidades sin tener que desarrollar una interfaz gráfica para que el usuario interactúe. Aunque hay que tener en cuenta que la mayoría de la gente, ajena al mundo de la programación, no sabe cómo utilizarlas. Así que están pensadas principalmente para desarrolladores de software, usuarios experimentados o para automatizar tareas.

Pasar parámetros a los scripts o mostrar el manual de tu aplicación de terminal, son algunas de las posibilidades de estas librerías de desarrollo de CLIs. Explora la documentación de paquetes como Commander.js para sacar el máximo partido a tu interfaz de línea de comandos en TypeScript.

Si alguna vez te habías preguntado con qué tecnologías están hechas las herramientas de consola que utilizas para desarrollar software, ahora ya sabes que una de las opciones es que estén escritas en TypeScript.

#4 – Desarrollo de Inteligencia artifical con TypeScript

Aunque es cierto que cuando hablamos de inteligencia artificial el primer lenguaje de programación que se nos viene a la mente es Python, hoy en día es posible desarrollar aplicaciones que hacen uso de la inteligencia artificial también en TypeScript.

2 robots humanoides representando la inteligencia artificial.

El principal motivo por el que la gente utiliza TypeScript en el desarrollo de inteligencias artificiales es porque vienen del desarrollo web y así no tienen que empezar de cero con Python antes de poder probar una librería como, por ejemplo, TensorFlow.

TensorFlow: la librería de inteligencia artifical de Google

TensorFlow es una de las librerías de inteligencia artificial más conocidas en el mundo del desarrollo de software. Esta librería te permite crear modelos de machine learning fácilmente y cuenta con una documentación excelente y una gran comunidad que hacen muy sencillo aprender a utilizarla.

En su versión para JavaScript, TensorFlow puede ser ejecutada tanto en un navegador web como en un proceso de Node.js, dependiendo del entorno en el que nos encontremos. Esto la convierte en una candidata perfecta para sistemas de inteligencia artificial portables que pueden ejecutarse prácticamente en cualquier ordenador que tenga un navegador web.

<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest/dist/tf.min.js"></script>
npm install @tensorflow/tfjs

Las aplicaciones que podemos construir con modelos de machine learning son infinitas: desde un sistema de sincronización de labios hasta un sistema para controlar videojuegos con tus movimientos en el mundo real.

Si quieres empezar a utilizar TensorFlow en TypeScript, te recomiendo que visites su página oficial donde encontrarás multitud de ejemplos que ilustran la documentación de su API.

#5 – Desarrollo de videojuegos con TypeScript

¿Sabías que también puedes desarrollar videojuegos en TypeScript sin tener que aprender otro lenguaje de programación?

Timmy Turner, de Los Padrinos Mágicos, jugando a videojuegos.

Al fin y al cabo, un videojuego no es más que un bucle infinito, llamado Game Loop, que itera cada tantos milisegundos, dependiendo de la configuración de FPS que hayamos realizado, y refresca en pantalla las vistas con las actualizaciones que se han producido en la capa de datos.

Juegos de navegador y WebGL

Los juegos escritos en TypeScript se ejecutan en un navegador web y aprovechan el elemento canvas de HTML5 como lienzo para mostrar los gráficos en un eje de coordenadas cartesiano. El canvas a su vez hace uso de la API de WebGL para construir aplicaciones interactivas de alto rendimiento con gráficos 2D y 3D. Actualmente todos los navegadores modernos tienen soporte para esta versión web de OpenGL.

Y además no hace falta que construyamos nuestros juegos desde cero, con todo el trabajo que eso conlleva. Pues al igual que en otras plataformas existen motores de videojuegos como Unity o Unreal Engine para facilitarnos el desarrollo, en TypeScript tenemos diferentes motores para agilizar la programación de juegos de navegador.

Motores de videojuegos en TypeScript

Existen muchos otros, pero creo que Phaser para 2D o Babylon.js para juegos 3D son los motores más maduros para desarrollar juegos nativos de navegador e integrarlos en una aplicación web completa. Así que yo te recomiendo escoger uno de ellos como base para empezar con tu juego para aprovechar todos los problemas que ya hay resueltos por sus comunidades y que no te quedes tirado en cualquier momento.

Logo de Phaser y algunas de las características principales del motor de videojuegos.

A los que venís del desarrollo web, estoy seguro de que os hace ilusión descubrir que también podéis hacer juegos con lo que sabéis. Os animo a probar alguno de estos motores para dar vuestros primeros pasos como desarrolladores de videojuegos.

Yo personalmente empecé con el desarrollo de juegos de navegador. Esto me ayudó a entender cómo funcionan motores de videojuegos por dentro y a aprender técnicas básicas que se utilizan en el desarrollo de videojuegos.

¿Qué experiencia tienes con TypeScript?

¿Habías ya desarrollado algún tipo de proyecto diferente al frontend web en TypeScript?

Personaje con gesto interrogativo.

¿Se te ocurre algún caso de uso interesante de este lenguaje que se me haya olvidado mencionar u otro lenguaje que tú consideres más versátil que TypeScript?

No te olvides de seguirme en redes sociales si te ha gustado este artículo y quieres que siga subiendo contenido como este con regularidad.

De nuevo, soy Carlos Sala, desarrollador de software y ¡nos vemos pronto!

Carlos Sala Samper

Handmade software.