Empezamos creando una API REST sencilla en TypeScript desde cero, partiendo de un repositorio completamente vacío. La idea es construir un proyecto básico que nos permita entender todo el flujo, desde la inicialización con npm init hasta tener un producto funcional que responda con datos JSON. No se trata de un proyecto complejo ni de una aplicación con muchas funcionalidades, sino de un ejemplo práctico para ver cómo se integra TypeScript en un entorno real con Express.
Para este ejemplo, hemos decidido trabajar con datos reales de fútbol que se obtienen de OpenFootball, un repositorio en GitHub que publica información sobre ligas europeas. En concreto, descargamos dos archivos JSON: uno con los clubes participantes en la liga española y otro con los resultados de los partidos. Estos datos nos servirán para crear una API que, al recibir una petición con el nombre corto de un equipo, nos devuelva información sobre sus partidos y resultados.
El primer paso fue crear la estructura del proyecto. Creamos un directorio para el repositorio, inicializamos el proyecto con npm init y configuramos el archivo package.json. Decidimos organizar el código fuente en una carpeta src y compilarlo a una carpeta dist, siguiendo buenas prácticas para proyectos TypeScript. Instalamos TypeScript como dependencia de desarrollo con npm install --save-dev typescript para poder transpilar nuestro código.
Luego, configuramos el archivo tsconfig.json con las opciones básicas: establecimos rootDir en src y outDir en dist, y mantuvimos el modo estricto activado para asegurar un chequeo de tipos riguroso. También añadimos scripts en package.json para compilar (npm run build), ejecutar (npm run start) y limpiar la carpeta de salida (npm run clean).
Para importar los archivos JSON dentro del proyecto, usamos la función require, que permite cargar directamente archivos JSON en Node.js. Como TypeScript no reconoce require por defecto, instalamos los tipos de Node para que el compilador entienda esta función. Así, podemos trabajar con los datos de los clubes y resultados sin problemas.
Para mantener el proyecto limpio, instalamos la dependencia rimraf, que es una herramienta multiplataforma para eliminar carpetas y archivos, similar a rm -rf en Unix, pero compatible con Windows. Esto nos permite definir un script clean que borre la carpeta dist sin preocuparnos por el sistema operativo.
Finalmente, configuramos un repositorio Git local para controlar las versiones del proyecto. Añadimos un .gitignore para evitar subir la carpeta node_modules, y realizamos los primeros commits para guardar el progreso. Este repositorio es solo para uso personal y no se subirá a ningún servidor remoto.
Con esta base lista, tenemos un proyecto TypeScript configurado, con datos JSON reales integrados y preparado para empezar a construir la API REST que responderá con información sobre los partidos de fútbol. En los siguientes pasos, nos centraremos en tipar correctamente los datos, crear las rutas en Express y devolver respuestas JSON basadas en las peticiones que recibamos.