Apariencia
❌ 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.jsNO lo escribí yo: lo generatscal 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.jsSi las líneas rojas no se van solas: Cmd + Shift + P → Reload Window.
🔑 Regla que salió de aquí
⚠️
tsc main.ts(con nombre) IGNORA eltsconfig.json. Para usar la configuración, corretscsin nombre de archivo, parado donde está eltsconfig.json.
| Comando | ¿Usa tsconfig? |
|---|---|
tsc | ✅ Sí |
tsc main.ts | ❌ No |