Skip to content

❌ No se puede volver a declarar la variable con ámbito de bloque

TypeScript · 2026-07-11 · Variable_base

🔴 Qué salió

Líneas rojas en TODAS las declaraciones del main.ts:

let nombre: string = "Styp";   // ❌ No se puede volver a declarar la variable
let edad: number = 30;         //    con ámbito de bloque 'nombre'
...

El código igual corría bien en la terminal — el error era solo del editor.

🔍 Causa

No había tsconfig.json en el proyecto. Sin él, VS Code mete al main.ts y a su compilado main.js en el mismo espacio global. Como los dos declaran let nombre, let edad, etc., TypeScript lo cuenta como la misma variable declarada dos veces.

  main.ts        main.js         ← ambos en el MISMO scope global (sin tsconfig)
  let nombre  +  let nombre   →  ❌ duplicado

📝 El main.js NO lo escribí yo: lo genera tsc al compilar (es la traducción a JS). Es normal que aparezca; no es un conflicto de Git.

✅ Solución

Crear un tsconfig.json en la carpeta. Con él, TS ignora los .js y, gracias a moduleDetection: "force", cada archivo pasa a ser un módulo con su propio scope → se acaba el duplicado.

json
{
  "compilerOptions": {
    "target": "esnext",
    "module": "nodenext",
    "moduleDetection": "force",
    "strict": true,
    "skipLibCheck": true
  }
}

Luego compilar con tsc a secas (sin nombre de archivo) para que use el tsconfig:

bash
tsc && node main.js

Si las líneas rojas no se van solas: Cmd + Shift + PReload Window.

🔑 Regla que salió de aquí

⚠️ tsc main.ts (con nombre) IGNORA el tsconfig.json. Para usar la configuración, corre tsc sin nombre de archivo, parado donde está el tsconfig.json.

Comando¿Usa tsconfig?
tsc✅ Sí
tsc main.ts❌ No