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