Tipos de Datos Básicos en GraphQL: Int, Float, String, Boolean, ID

Clase 7 de 24Curso de GraphQL con Node.js

Contenido del curso

Resumen

Dominar el sistema de tipos en GraphQL es fundamental para construir APIs robustas y confiables. Los scalar types son los bloques básicos que definen qué tipo de dato puede entrar y salir en cada operación, y conocerlos a fondo te permite aprovechar la validación automática que GraphQL ofrece tanto en el backend como en el frontend.

¿Cuáles son los cinco scalar types que ofrece GraphQL?

GraphQL cuenta con exactamente cinco tipos escalares nativos [01:05]. Cada uno se escribe con la primera letra en mayúscula y representa un tipo de dato específico:

  • Int: números enteros, sin decimales.
  • Float: números con precisión decimal, ideales para precios o medidas.
  • String: cadenas de texto, el tipo más común para representar palabras o frases.
  • Boolean: valores lógicos que solo pueden ser true o false.
  • ID: se comporta como un string, pero su propósito es representar un identificador único. En ocasiones se utiliza como sistema de caché [01:42].

Aunque son pocos, estos tipos cubren la mayoría de escenarios básicos. Más adelante es posible extenderlos y crear tipos de datos personalizados para modelar información más compleja.

¿Cómo se definen queries y resolvers para cada tipo?

Para cada query declarada en las type definitions, es necesario crear un resolver que devuelva un valor del tipo correcto [02:22]. Por ejemplo, si declaras un query llamado getInt que retorna Int, su resolver debe devolver un número entero. Lo mismo aplica para getFloat, getString, getBoolean y getID.

Al ejecutar varias consultas en el playground, puedes verificar que:

  • No necesitas separar las consultas con comas.
  • Cada query se resuelve en paralelo por su respectivo resolver.
  • Puedes ejecutar múltiples queries al mismo tiempo, seleccionando solo las que necesites [03:30].

Esta flexibilidad significa que el cliente decide exactamente qué datos solicitar en cada petición.

¿Se pueden usar scalar types como argumentos de entrada?

Los scalar types no solo sirven para definir el valor de retorno, también funcionan como tipado de variables de entrada [04:00]. Por ejemplo, puedes declarar que getInt recibe un argumento llamado age de tipo Int, o que getFloat recibe un argumento price de tipo Float.

Dentro del resolver, estos valores llegan en un segundo parámetro comúnmente llamado args. Desde ahí accedes a cada argumento por su nombre, como args.age o args.price [04:30].

Al revisar la documentación autogenerada en el playground, puedes confirmar que cada query muestra sus parámetros de entrada con el tipo esperado.

¿Cómo funciona la validación automática de tipos en GraphQL?

Una de las ventajas más poderosas es la validación automática en ambas direcciones: entrada y salida [05:15].

  • Validación de salida: si declaras que un resolver retorna String pero devuelves un array, GraphQL lanza un error indicando que la información retornada no coincide con el contrato definido.
  • Validación de entrada: si un argumento espera un Int y el cliente envía un String, la consulta falla antes de llegar al resolver [05:45].

Esto significa que tanto el equipo de backend como las aplicaciones frontend (ya sea en Angular, React o móvil) deben respetar las firmas de tipado. Si el frontend intenta enviar un dato con el tipo incorrecto, el servidor GraphQL rechaza la petición de forma automática [06:10].

En la práctica, esto equivale a tener una capa de integridad de datos sin escribir validaciones manuales adicionales. El contrato de tipos actúa como un acuerdo entre quien consume y quien provee la API.

¿Por qué importa el tipado estricto en tus APIs?

El tipado estricto garantiza que:

  • Los errores se detectan antes de procesar la lógica de negocio.
  • La documentación se genera automáticamente y siempre está actualizada.
  • El frontend sabe exactamente qué enviar y qué esperar como respuesta.

Con estos cinco scalar types como base, el siguiente paso es aprender a trabajar con listas y con valores no nulos, lo que permite modelar estructuras de datos más completas y seguras. ¿Ya probaste enviar un tipo incorrecto en el playground para ver cómo responde GraphQL? Comparte tu experiencia en los comentarios.