Solucionando el error TS2322 en integraciones de Astro#
Hoy aprendí que al configurar integraciones en astro.config.mjs, TypeScript puede quejarse si pasas un array de strings donde espera un string único, especialmente en librerías como astro-robots-txt.
El error típico es:
Type ‘string[]’ is not assignable to type ‘string’.
La Solución#
En lugar de definir el objeto repetidamente, usa .map() para generar la configuración dinámica:
const bots = ["GPTBot", "CCBot", "Bytespider"];
// ❌ Mal: TypeScript infiere tipos incompatibles a veces
// policy: [{ userAgent: bots, disallow: '/' }]
// ✅ Bien: Genera un objeto por cada bot
policy: [
...bots.map(bot => ({
userAgent: bot,
disallow: '/'
}))
]
Esto mantiene el archivo de configuración limpio y satisface el tipado estricto de la librería.
Desglose de la Estructura#
-
Frontmatter (
---):title: Debe ser muy descriptivo (SEO Long-tail). Piensa: “¿Qué escribiría yo en Google para encontrar esto?”.pubDate: Fecha de hoy.tags: Clave para filtrar. Úsalos para agrupar (ej:css,terminal,vim).source(Opcional): Si lo aprendiste de un tweet, un video o un issue de GitHub, pon el link. Esto da crédito y contexto.
-
Cuerpo:
- Contexto (1-2 frases): “Estaba intentando X y pasó Y”.
- Código: El snippet es el protagonista.
- Explicación (Breve): Por qué funciona la solución.
Otro ejemplo rápido (Terminal)#
---
title: "Matar proceso en puerto 3000 (Mac/Linux)"
pubDate: 2024-03-21
tags: ["terminal", "bash"]
---
Cada vez que `pnpm dev` se queda colgado y el puerto 3000 sigue ocupado:
```bash
# Encuentra el PID y mátalo en una línea
lsof -t -i:3000 | xargs kill -9
O usando el alias que agregué a mi .zshrc:
alias nuke3000="lsof -t -i:3000 | xargs kill -9"