Typescript es un superset de JavaScript que tiene como finalidad desarrollar aplicaciones grandes con
facilidad de mantenimiento.
Primero vamos a explicar unos conceptos de Typescript para comprender el funcionamiento del mismo.
Tipado estático:
En typescript las variables tienen un tipo de dato y los valores sólo se pueden asignar a variables del tipo
correspondiente.
En base a esto se desglozan otras caractetristicas: Interfaces, Genéricos, Casting de datos (conversión de
tipos),
Argumentos con tipo, Tipo de retorno para las funciones y otros.
Cuando comparamos Typescript con Javascript nos damos cuenta también que
en la primera se tiende a escribir
código verboso
pero además, por su naturaleza ofrece beneficios como: Autocompletado de código, Recomendación de qué argumentos
recibe una función,
Recomendación de qué tipo retorna una función, Auto documentación del código, Mejor análisis para detectar
errores.
Typescript
nos ayuda a detectar errores al escribir el código y no cuando lo lanzamos para testear a nivel de
usuario.
Ahora si, vamos al proyecto. Primero que nada, debemos verificar si tenemos instalado Typescript en nuestra
máquina,
en caso de que no, podemos ejecutar (si estás en linux) npm install -g typescript
Luego, ejecutamos en la raiz de nuestro proyecto: npm i (para crear nuestro package.json) y tsc --init (para
crear nuestro archivo
de configuración para typescript - tsconfig.json). En el package json podemos
implementar un par de procesos que nos van ayudar con el desarrollo, primero
tsc -w para ejecutar typescript y detectar errores y segundo nodemon para levantar el servidor
y que quede escuchando por cambios. En tsconfig.json podemos indicar que vamos usar
ES6 en nuestro proyecto y que los archivos js de salida vayan a una carpeta llamada build.
Recordemos que typescript convierte en javascript el resultado de lo que escribamos
correctamente y este js es el que se va ejecutar.
Luego podemos configurar nuestro servidor, importamos los módulos que necesitamos
y creamos una clase. En el constructor de la misma ejecutamos express, las configuraciones iniciales
y los endpoints que va exponer el API. Debemos tener en cuenta el tipado de datos, es por ello
que la variable app se declara con su tipo en la linea 12. Luego de la clase, al final del archivo instanciamos
la misma y ejecutamos el método start.
Vamos a configurar nuestras rutas: En este caso tenemos dos módulos: indexRouter y PostsRouter,
en PostsRouter aplicaremos lo siguiente: llamamos al middleware auth que nos va permitir indicarle a
un endpoint en específico si estará protegido por jwt, y también llamamos al modelo que corresponde con el
proceso.
(estamos implementando mongoDB con mongoose como interfaz) Creamos nuestra clase, definimos los tipos de datos
con su valor y creamos nuestros métodos. Al final, instanciamos la clase y exportamos a router que es el tipo de
dato
Router y que le da vida a los endpoints. Cada endpoint llama al método indicado. Si el endpoint está protegido
debe llevar
dentro de sus parámetros al arreglo auth que fué exportado desde el middleware.
Luego de esto podemos configurar nuestro middleware con jwt, exportamos una constante
que recibe Request, Response y NextFunction como parámetros y ejecuta el proceso de autenticación.
Si es correcto permite acceder a los datos, si no, lanza una respuesta con el mensaje indicado.
Por último definimos nuestro modelo:
Para finalizar probamos el API con POSTMAN:
Pueden clonar el proyecto AQUÍ
Espero que les sirva, saludos!
#Javascript
#Typescript
#Node.js
#Express.js
#JWT
"Una forma de apoyar la creación de contenido técnico y de calidad es donando la cantidad que
creas conveniente, si quieres que haga un post sobre un tema en específico no dudes en avisarme"