Mediante las variables de bloque en TypeScript podemos atacar uno de los grandes problemas, o mejor dicho, dolores de cabeza, del lenguaje Javascript, que es el uso de la declaración de variables mediante var
.
Y es que el ámbito de las variables definidas con var
es un ámbito global. Es por ello que una vez definidas podemos acceder a ellas desde cualquier parte del programa.
En lenguajes más estructurados la idea de la definición y ámbito de las variables se asocia al bloque. Es decir que la variable puede ser accedida dentro su bloque de sentencias o de los bloques de sentencias anidados, pero nunca desde otro punto.
Para conseguir esto podemos definir variables de bloque en TypeScript mediante la sentencia let
. Para ello la estructura será la siguiente:
let variable:tipo = valor;
Así por ejemplo podemos definir una variable de bloque de tipo cadena de la siguiente forma:
let cadena:string = "Soy una cadena";
Pero lo interesante es que veamos cómo funcionan. Para ello nos vamos a apoyar en el siguiente código:
function mifuncion() {
let a:number = 1;
let validar:boolean = true;
if (validar) {
var b:number = 2;
let c:number = a+b;
}
console.log(b);
console.log(c); // Da error
}
Como podemos apreciar es una función que tiene un bloque de sentencias anidado mediante una estructura selectiva if
.
Si analizamos la variable a
podemos ver que esta variable se puede acceder tanto en su bloque de sentencias como en el anidado. Es por ello que cuando queremos acceder a ella dentro de la estructura if
no hay ningún problema.
if (validar) {
var b:number = 2;
let c:number = a+b;
}
Si bien nos fijaremos ahora en la variable c
. Esta variable de bloque solo podrá ser accedida dentro de su bloque, por lo tanto solo tiene visibilidad dentro de la estructura if
.
En el momento que hemos intentado acceder a ella fuera de su bloque, mediante el método console.log()
veremos que da error. Ya que no hay ámbito de visibilidad de dicha variable.
Por el contrario vemos que una variable definida de forma global, mediante la sentencia var
, como es el caso de la variable b
, puede ser accedida sin problemas dentro de otra estructura de bloque de sentencias que no sea la que la definió.
Espero que con este pequeño ejemplo haya quedado un poco más claro cómo se pueden definir variables de bloque en TypeScript mediante la sentencia let
.