Variáveis e Constantes no TypeScript
Para armazenar dados em um programa no TypeScript, assim como em muitas outras linguagens de programação, usamos variáveis.
Para declarar variáveis, como no JavaScript, você pode utilizar a palavra-chave var
:
var z; // variável z
Outra maneira de declarar variáveis é com a palavra-chave let
, que foi introduzida no JavaScript com o padrão ES 2015:
let z;
O uso de let
é mais recomendado, pois evita alguns problemas associados à declaração de variáveis. Em particular, com var
, podemos declarar mais de uma vez uma variável com o mesmo nome:
var x = "hello";
console.log(x);
var x = "work";
console.log(x);
Em um programa grande, pode ser difícil acompanhar se uma variável já foi declarada, o que pode causar erros. O uso de let
resolve esse problema:
let x = "hello";
console.log(x);
let x = "work"; // isso causará um erro, pois a variável x já foi declarada
console.log(x);
O mesmo ocorre se declararmos uma variável com o mesmo nome duas vezes, mas usando as palavras-chave let
e var
:
let x = "hello";
console.log(x);
var x = "work"; // isso causará um erro, pois a variável x já foi declarada
console.log(x);
Uma vez que a variável é declarada, podemos atribuir valores a ela e, ao longo do programa, alterar esse valor:
let z = 6;
z = 8;
Além das variáveis, o TypeScript também possui constantes: para elas, o valor pode ser atribuído apenas uma vez, e não pode ser modificado ao longo do programa. Para declarar constantes, usamos a palavra-chave const
:
const z = 6;
z = 8; // isso causará um erro — não é permitido alterar o valor de uma constante
Escopo de Variáveis e Constantes
Como mencionado, não podemos declarar mais de uma vez uma variável (usando let
) ou uma constante (usando const
) com o mesmo nome no mesmo escopo. O escopo pode ser local, definido por um bloco de código delimitado por chaves { código }
, ou global, fora de qualquer bloco de código.
Variáveis e constantes declaradas em um escopo interno podem ocultar aquelas com o mesmo nome no escopo externo. Por exemplo:
let x = 10;
{
let x = 25;
console.log(x); // 25
}
console.log(x); // 10
Aqui, temos duas variáveis com o mesmo nome. No entanto, não há erro, pois elas estão em escopos diferentes. A variável let x = 10
está no escopo global, enquanto let x = 25
está em um bloco de código mais interno, no escopo local, e oculta a variável global. O resultado no console será:
25 10
O mesmo se aplica quando as variáveis são declaradas em escopos locais aninhados:
let x = 10;
{
let x = 25;
{
let x = 163;
console.log(x); // 163
}
console.log(x); // 25
}
console.log(x); // 10
Diferenças entre var e let/const
Aqui está um resumo das diferenças entre var
e let/const
:
Escopo
var
: Pode ser acessada fora do escopo em que foi declarada.{ var x = 94; } console.log(x); // funciona
let
/const
: Só pode ser acessada dentro do escopo em que foi declarada.{ let x = 94; } console.log(x); // erro
Uso antes da declaração
var
: Pode ser utilizada antes da sua declaração.console.log(x); // undefined, mas funciona var x = 76;
let
/const
: Só pode ser utilizada após a sua declaração.console.log(x); // erro let x = 76;
Re-declaração
var
: Pode ser declarada várias vezes no mesmo escopo.var x = 72; console.log(x); // 72 var x = 24; // funciona console.log(x); // 24
let
/const
: Pode ser declarada apenas uma vez no mesmo escopo.let x = 72; console.log(x); // 72 let x = 24; // erro console.log(x);