Volver a recursos del Bloque 5

CÁPSULA DE BASE

Fundamentos de TypeScript

Tipos, objetos y módulos suficientes para leer y extender una app RAG.

Objetivo técnico

Al terminar podrás modelar el contrato de una respuesta RAG y transformar sus citas con seguridad. TypeScript no cambia lo que ocurre al ejecutar el programa: revisa antes si los valores tienen la forma esperada.

Antes de empezar

Necesitas Node, npm y un editor. Crea una carpeta y ejecuta npm init -y y npm install -D typescript tsx. No necesitas dominar clases ni genéricos.

Paso a paso

  1. Crea src/check.ts y define la forma de una cita y de la respuesta:
type Citation = { id: string; source: string; excerpt: string };
type AskResponse = { answer: string; citations: Citation[] };

const result: AskResponse = {
  answer: 'La devolución tarda 30 días.',
  citations: [{ id: 'c1', source: 'politicas.md', excerpt: 'Plazo: 30 días' }],
};

const sources = result.citations.map((citation) => citation.source);
console.log(result.answer, sources);
  1. Ejecuta npx tsx src/check.ts.
  2. Cambia answer por el número 30. El editor o npx tsc --noEmit src/check.ts debe marcar que un número no es string.
  3. Revierte el cambio. Observa que map recibe cada Citation; no necesitas repetir el tipo.

Verificación

El código debe imprimir la respuesta y ['politicas.md']. Después, npx tsc --noEmit src/check.ts debe terminar sin errores.

Errores frecuentes

  • Usar any para silenciar un problema elimina la protección.
  • Confundir Citation con Citation[]: uno es un objeto; el otro, una colección.
  • Creer que el tipo valida JSON externo: TypeScript no verifica datos en runtime; eso requiere un schema.

Práctica

Agrega documentId a Citation. Deja que el compilador muestre dónde falta y corrige el objeto. Luego filtra las citas cuyo source termine en .md.

Puente al RAG

El pipeline del Bloque 5 serializa answer, requestId, usage y citations. Estos tipos permiten mantener el mismo contrato entre retrieval, API y UI.

Fuente primaria

Everyday Types — TypeScript Handbook