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 zOutra 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 constanteEscopo 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); // 10Aqui, 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); // 10Diferenç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);