Declarar Variables
Definición, diferencias y ejemplos de uso de const, let y var en TypeScript.
Declaración de Variables en TypeScript
En TypeScript, al igual que en JavaScript moderno (ES6+), existen tres palabras clave principales para declarar variables: const, let y var. Cada una maneja de forma distinta el alcance (scope), la mutabilidad y la redeclaración.
1. const
La palabra clave const se utiliza para declarar variables con valores de solo lectura. Una vez asignado un valor, no se puede volver a reasignar.
- Alcance (Scope): Bloque (
{ }). - Reasignación: No permitida.
- Redeclaración: No permitida.
- Requisito: Debe inicializarse en el momento de la declaración.
typescriptconst nombre: string = "Carlos";
// ❌ Error: No se puede reasignar una constante
// nombre = "Juan";
// 💡 Nota sobre mutabilidad:
// Si 'const' almacena un objeto o un array, las propiedades internas SÍ se pueden modificar.
const usuario = {
nombre: "Carlos",
edad: 25
};
usuario.nombre = "Juan"; // ✅ Totalmente válido
2. let
La palabra clave let se utiliza cuando se sabe que el valor de la variable cambiará a lo largo de la ejecución del programa.
- Alcance (Scope): Bloque (
{ }). - Reasignación: Permitida.
- Redeclaración: No permitida dentro del mismo bloque.
typescriptlet nombre: string = 'Carlos';
// ✅ Reasignación válida
nombre = "Juan";
if (true) {
let nombre: string = 'Luis'; // ✅ Válido: es una variable distinta dentro del bloque 'if'
console.log("Nombre:", nombre); // Imprime Luis
}
console.log("Nombre:", nombre); // Imprime Juan
3. var
var es la forma tradicional de declarar variables desde los inicios de JavaScript. Actualmente no se recomienda su uso en TypeScript debido a que no respeta el alcance de bloque y utiliza hoisting (elevación), lo cual suele generar errores difíciles de depurar.
- Alcance (Scope): Función o global (ignora bloques como
if,for,while). - Reasignación: Permitida.
- Redeclaración: Permitida dentro del mismo ámbito.
typescriptvar nombre: string = "Carlos";
var nombre: string = "Juan"; // ✅ Se permite la redeclaración (puede causar fallos accidentales)
if (true) {
var nombre: string = "Luis";
}
// ⚠️ La variable sigue existiendo fuera del bloque 'if'
console.log(nombre); // Imprime "Luis"
Tabla Comparativa
| Propiedad | const | let | var |
|---|---|---|---|
| Alcance (Scope) | Bloque | Bloque | Función / Global |
| Reasignable | ❌ No | Sí | Sí |
| Redeclarable | ❌ No | ❌ No | Sí |
| Hoisting | No inicializado | No inicializado | Elevado como undefined |
| Buenas prácticas | Opción por defecto | Si cambia el valor | ⚠️ Evitar su uso |