En este tema, aprenderemos cómo trabajar con APIs en TypeScript. Las APIs (Interfaces de Programación de Aplicaciones) son esenciales para la comunicación entre diferentes sistemas y servicios. TypeScript, con su tipado estático, puede ayudarnos a manejar las respuestas de las APIs de manera más segura y eficiente.
Contenido
Introducción a las APIs
Las APIs permiten que diferentes aplicaciones se comuniquen entre sí. En el contexto de aplicaciones web, las APIs RESTful son muy comunes. Estas APIs utilizan métodos HTTP (GET, POST, PUT, DELETE) para realizar operaciones sobre recursos.
Realizando Peticiones HTTP
Para realizar peticiones HTTP en TypeScript, podemos usar la API Fetch, que es nativa en los navegadores modernos. También podemos usar bibliotecas como Axios para simplificar el manejo de peticiones.
Usando Fetch
// Realizando una petición GET usando Fetch fetch('https://api.example.com/data') .then(response => response.json()) .then(data => { console.log(data); }) .catch(error => { console.error('Error:', error); });
Usando Axios
Primero, instala Axios:
Luego, puedes usar Axios de la siguiente manera:
import axios from 'axios'; // Realizando una petición GET usando Axios axios.get('https://api.example.com/data') .then(response => { console.log(response.data); }) .catch(error => { console.error('Error:', error); });
Tipando Respuestas de APIs
Una de las ventajas de TypeScript es que podemos definir tipos para las respuestas de las APIs, lo que nos ayuda a evitar errores y a tener un código más robusto.
Definiendo Tipos
Supongamos que la API devuelve un objeto con la siguiente estructura:
{ "id": 1, "name": "John Doe", "email": "[email protected]" }
Podemos definir un tipo para esta respuesta en TypeScript:
Usando el Tipo en la Petición
import axios from 'axios'; interface User { id: number; name: string; email: string; } axios.get<User>('https://api.example.com/user/1') .then(response => { const user: User = response.data; console.log(user.name); }) .catch(error => { console.error('Error:', error); });
Ejemplo Práctico
Vamos a crear un ejemplo práctico donde realizamos una petición a una API pública y mostramos los datos en la consola.
Paso 1: Definir el Tipo
Paso 2: Realizar la Petición
import axios from 'axios'; axios.get<Post[]>('https://jsonplaceholder.typicode.com/posts') .then(response => { const posts: Post[] = response.data; posts.forEach(post => { console.log(`Title: ${post.title}`); console.log(`Body: ${post.body}`); }); }) .catch(error => { console.error('Error:', error); });
Ejercicios Prácticos
Ejercicio 1: Obtener Usuarios
- Define un tipo
User
con las propiedadesid
,name
,username
, yemail
. - Realiza una petición GET a
https://jsonplaceholder.typicode.com/users
. - Muestra los nombres de los usuarios en la consola.
Ejercicio 2: Crear un Nuevo Post
- Define un tipo
NewPost
con las propiedadesuserId
,title
, ybody
. - Realiza una petición POST a
https://jsonplaceholder.typicode.com/posts
para crear un nuevo post. - Muestra la respuesta en la consola.
Soluciones
Solución Ejercicio 1
import axios from 'axios'; interface User { id: number; name: string; username: string; email: string; } axios.get<User[]>('https://jsonplaceholder.typicode.com/users') .then(response => { const users: User[] = response.data; users.forEach(user => { console.log(user.name); }); }) .catch(error => { console.error('Error:', error); });
Solución Ejercicio 2
import axios from 'axios'; interface NewPost { userId: number; title: string; body: string; } const newPost: NewPost = { userId: 1, title: 'My New Post', body: 'This is the content of my new post.' }; axios.post<NewPost>('https://jsonplaceholder.typicode.com/posts', newPost) .then(response => { console.log(response.data); }) .catch(error => { console.error('Error:', error); });
Conclusión
En esta sección, hemos aprendido cómo trabajar con APIs en TypeScript. Hemos visto cómo realizar peticiones HTTP usando Fetch y Axios, cómo definir tipos para las respuestas de las APIs y cómo usar estos tipos para manejar las respuestas de manera segura. Los ejercicios prácticos te ayudarán a reforzar estos conceptos y a aplicarlos en tus propios proyectos.
En el próximo módulo, profundizaremos en el manejo de errores y patrones asíncronos avanzados para mejorar aún más nuestras habilidades en la programación asíncrona con TypeScript.
Curso de TypeScript
Módulo 1: Introducción a TypeScript
- ¿Qué es TypeScript?
- Configuración del Entorno de TypeScript
- Tipos Básicos
- Anotaciones de Tipo
- Compilando TypeScript
Módulo 2: Trabajando con Tipos
Módulo 3: Tipos Avanzados
Módulo 4: Funciones y Módulos
- Tipos de Función
- Parámetros Opcionales y Predeterminados
- Parámetros Rest
- Módulos y Espacios de Nombres
- Decoradores
Módulo 5: Programación Asíncrona
Módulo 6: Herramientas y Mejores Prácticas
- Linting y Formateo
- Pruebas de Código TypeScript
- TypeScript con Webpack
- TypeScript con React
- Mejores Prácticas