# Editor: Visual Studio Code

> Instala Visual Studio Code y las extensiones más habituales para programar en Python y en TypeScript, los dos lenguajes que vas a usar a lo largo del libro.

- Capítulo: -0.8
- Dificultad: básico
- Fuente: https://book-ai-engineer.lucenyo.dev/es/lessons/preparacion/editor-visual-studio-code/

---
Puedes seguir este libro con el editor que prefieras, pero [Visual Studio Code](https://code.visualstudio.com/) es el que usamos en los ejemplos por ser gratuito, multiplataforma y tener el mejor soporte de extensiones tanto para Python como para TypeScript. Si usas un fork como Cursor o Windsurf, la configuración de abajo se aplica igual: comparten el mismo ecosistema de extensiones.

Una vez instalado, verifica que el comando `code` está disponible en tu terminal:

```bash
code --version
```

---

## Extensiones para Python

```bash
code --install-extension ms-python.python
code --install-extension ms-python.vscode-pylance
code --install-extension charliermarsh.ruff
code --install-extension ms-python.debugpy
```

| Extensión | Para qué sirve |
| :--- | :--- |
| Python | Soporte de lenguaje, detección del entorno virtual, ejecutar/depurar desde el editor |
| Pylance | Comprobación de tipos e importaciones, autocompletado rápido |
| Ruff | Linter y formateador, rápido, atrapa errores comunes al guardar |
| Debugpy | Depuración paso a paso de Python integrada en el editor |

---

## Extensiones para TypeScript

```bash
code --install-extension dbaeumer.vscode-eslint
code --install-extension esbenp.prettier-vscode
```

| Extensión | Para qué sirve |
| :--- | :--- |
| ESLint | Linter: detecta errores y patrones problemáticos mientras escribes |
| Prettier | Formateador automático, consistente entre archivos y entre personas del equipo |

El soporte de TypeScript en sí (autocompletado, tipos, ir a definición) viene integrado en VS Code por defecto; no hace falta instalar nada extra para eso.

---

## Ajustes recomendados

Dos ajustes que merece la pena activar desde el principio (`Settings > Open Settings (JSON)`):

```jsonc
{
  "python.analysis.typeCheckingMode": "basic",
  "editor.formatOnSave": true
}
```

La comprobación de tipos en modo `basic` avisa de argumentos con el tipo equivocado antes de ejecutar nada; formatear al guardar evita que tengas que pensar en el estilo del código mientras sigues los ejemplos, tanto en Python como en TypeScript.
