Inicio/Blog/TypeScript, Python e IA
Arquitectura de Software

TypeScript, Python y generación de código con IA: dónde encaja cada uno

El mejor lenguaje para código generado con IA no es un único lenguaje. Es aquel cuyos contratos, runtime, ecosistema y herramientas de verificación hacen una capa específica más fácil de limitar, inspeccionar y operar.

La IA cambia el costo de escribir, no el costo de equivocarse

Octoverse 2025 de GitHub informó que TypeScript se convirtió en el lenguaje más usado en GitHub en agosto de 2025, mientras los lenguajes tipados crecieron alrededor del desarrollo asistido por IA. Eso no significa que Python perdió importancia. Significa que la generación rápida vuelve más valiosos los sistemas de feedback. TypeScript encuentra errores estructurales durante la producción. Python da acceso directo al ecosistema dominante de IA, datos, scripts y automatización. SQL mantiene hechos de negocio cerca de la base.

La pregunta arquitectónica no es “¿TypeScript o Python?”. Es “¿en qué capa expresa cada uno el contrato con mayor claridad, y qué sistema independiente rechazará un cambio plausible pero incorrecto?”

Stack de lenguajes por capa
Borde de experienciaTypeScriptWeb UI, SDKs, clientes de API y contratos compartidos.Feedback rápido del compilador entre interfaces y application glue.
Frontera de servicioTypeScript o Python tipadoAPIs, orquestación, workers, colas, webhooks y tool gateways.Elige por ecosistema, pero valida en runtime cada frontera externa.
IA y automatizaciónPythonModelos, evaluación, retrieval, procesamiento, scripts y automatización.Ecosistema rico e iteración concisa; type hints no imponen comportamiento en runtime.
System of recordSQLHechos, relaciones, constraints, transacciones, permisos y consultas.Invariantes de base rechazan estado inválido independientemente del caller.
Prueba independienteCI, schemas y pruebasBuilds, checks estáticos, contratos, migraciones, scans y política.La implementación generada nunca es su propio juez final.

TypeScript es más fuerte donde viajan los contratos

TypeScript entiende JavaScript y usa inferencia, permitiendo agregar estructura sin anotar cada línea. Sus declaration files describen la forma de bibliotecas y APIs. En sistemas generados con IA, eso sirve donde un cambio debe seguir compatible entre frontend, backend, SDK, eventos y definiciones de tools.

Pero los tipos TypeScript desaparecen en runtime. Una función tipada no vuelve confiable el JSON externo. El código generado todavía necesita validación de schema, autorización, pruebas y constraints de base. El compilador es un revisor rápido de contratos, no una frontera de seguridad.

Python es más fuerte donde importan ecosistema y ciclo de iteración

Los type hints de Python ayudan a herramientas, IDEs, linters y type checkers, pero el runtime no los aplica. Esa flexibilidad es productiva para experimentación con modelos, pipelines de evaluación, datos, integraciones, scripts y automatización backend. También significa que una función Python generada con IA puede verse bien tipada mientras acepta datos malos en runtime si la validación no es explícita.

Pydantic es útil porque valida datos no confiables en modelos tipados. Asyncio soporta I/O concurrente para automatizaciones orientadas a red. El patrón práctico es Python tipado internamente, modelos runtime en fronteras y pruebas enfocadas en efectos secundarios, concurrencia y transformaciones.

Alcance del contrato¿Cuántos servicios, clientes, eventos y equipos deben acordar esta forma?
Riesgo runtime¿Qué rechaza input inválido después de que terminan tipos y generación?
Fit de ecosistema¿Qué lenguaje ya posee bibliotecas, operadores y observabilidad para la tarea?
Costo de verificación¿Qué tan barato es para CI probar el comportamiento tras la generación?

SQL debe ser dueño de los hechos, no solo del almacenamiento

Servicios generados pueden olvidar un check, competir con otro worker o usar el tipo equivocado del SDK. Las constraints de base siguen activas en la frontera final de escritura. PostgreSQL documenta constraints como herramientas para controlar datos y transacciones como unidades todo o nada. Unique keys, foreign keys, checks, permisos por fila y transacciones convierten invariantes de negocio en defensas ejecutables.

Eso no significa mover cada regla a SQL. Significa ubicar hechos duraderos donde todo caller deba respetarlos. TypeScript y Python expresan workflows; la base debe rechazar estados imposibles.

NecesidadMejor punto de partidaCómo ayuda al código generadoContrapeso obligatorio
Contratos compartidos de API y eventosTypeScript más schemas o clientes generados.Compilador expone formas incompatibles rápidamente.Validación runtime, versionado, contract tests y autorización.
Web app y SDK glueTypeScript.Un ecosistema tipado del browser al servidor.Pruebas de integración y manejo explícito de errores y estado.
IA, evaluación, datos y automatizaciónPython tipado.Ecosistema fuerte e iteración concisa.Pydantic o equivalente, type checker, pruebas y observabilidad.
Workers concurrentes de integraciónPython asyncio o TypeScript, por ecosistema.Ambos atienden bien orquestación orientada a red.Timeouts, retries, idempotencia, backpressure y tracing.
Hechos duraderos de negocioConstraints y transacciones SQL.Rechaza estado inválido independientemente de callers generados.Pruebas de migración, review de queries, backups y monitoreo.
Frontera entre lenguajesOpenAPI, JSON Schema, eventos o protobuf.Hace el contrato independiente de las implementaciones.Checks de compatibilidad y review del código generado.

Lo que yo construiría

Construiría un template de repositorio políglota donde los contratos se versionan y generan clientes TypeScript, modelos Python y fixtures de validación. Servicios TypeScript serían dueños de APIs de producto e integraciones que comparten contratos con aplicaciones web. Servicios Python serían dueños de IA, datos, evaluación y automatización. PostgreSQL aplicaría invariantes duraderos.

Cada cambio generado mostraría un mapa de impacto por lenguaje y capa: contratos alterados, clientes regenerados, modelos Python afectados, migraciones requeridas, pruebas seleccionadas y validadores runtime ejercitados. Eso hace visible la elección de lenguaje como arquitectura, no preferencia personal.

El principio de diseño

La IA puede escribir cualquiera de estos lenguajes de forma convincente. La ventaja de ingeniería viene de asignar cada lenguaje a la capa donde los errores son más fáciles de detectar. Usa TypeScript para contratos que viajan, Python para ecosistemas y automatizaciones rápidas, SQL para hechos que deben seguir verdaderos y verificación independiente para todos.