Sugerencias
← TIL Index
#typescript#astro#config

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#

  1. 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.
  2. 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"  
Enlace copiado al portapapeles