Tags de tipo (!!str, !!int, etc.)

De forma predeterminada, YAML interpreta valores según su forma: 123 como entero, true como booleano o null/~ como nulo. Sin embargo, a veces necesitamos forzar un tipo específico sin dejar lugar a ambigüedades. Para eso existen los tags de tipo, que se escriben con el prefijo !!.

9.1 ¿Qué es un tag de tipo?

Un tag explicita el tipo que debe asignarse a un valor, independientemente de su forma textual.

valor1: !!str 123      # Se interpreta como cadena
valor2: !!int "123"   # Se interpreta como entero

9.2 Principales tags de tipo

a) !!str — cadenas de texto

codigo: !!str 00123
respuesta: !!str true

Útil para conservar ceros a la izquierda o tratar “true” como texto y no como booleano.

b) !!int — enteros

edad: !!int "30"
cantidad: !!int 100

Asegura que un número dentro de comillas se convierta en entero.

c) !!float — decimales

precio: !!float "199.99"
descuento: !!float 0.15

d) !!bool — booleanos

activo: !!bool "true"
deshabilitado: !!bool "false"

e) !!null — valores nulos

direccion: !!null ""
telefono: !!null

f) !!seq — listas (secuencias)

colores: !!seq [Rojo, Verde, Azul]

g) !!map — diccionarios (mapas)

producto: !!map
  codigo: 1
  descripcion: Monitor
  precio: 85000

9.3 Casos prácticos

  • Códigos numéricos con ceros iniciales: codigo_postal: !!str 05000.
  • Evitar ambigüedad con booleanos: respuesta: !!str yes para almacenarlo como texto.
  • Validaciones estrictas: al integrar YAML con esquemas (JSON Schema, XML), los tags evitan errores de conversión.

9.4 Buenas prácticas

  • Usa tags solo cuando sea necesario; YAML ya interpreta correctamente la mayoría de los casos.
  • Prefiere !!str en valores ambiguos como 00123, yes, no.
  • En proyectos grandes (Kubernetes, Docker, CI/CD), utilízalos solo si la herramienta de validación lo requiere.

9.5 Ventajas y limitaciones

Ventajas:
  • Evitan errores de interpretación automática.
  • Ofrecen mayor control sobre los datos.
  • Resultan útiles en validaciones estrictas.
Limitaciones:
  • No todos los parsers soportan cada tag.
  • El uso excesivo puede reducir la legibilidad.

En resumen, los tags de tipo (!!str, !!int, !!float, !!bool, !!null, !!seq, !!map) nos permiten controlar con precisión cómo se interpretan los datos en YAML, evitando ambigüedades y garantizando que cada valor se trate con el tipo correcto.