TypeScript - Variáveis

Uma variável, por definição, é “um espaço nomeado na memória” que armazena valores. Em outras palavras, ele atua como um contêiner para valores em um programa. As variáveis ​​TypeScript devem seguir as regras de nomenclatura JavaScript -

  • Os nomes das variáveis ​​podem conter alfabetos e dígitos numéricos.

  • Eles não podem conter espaços e caracteres especiais, exceto o sublinhado (_) e o cifrão ($).

  • Os nomes das variáveis ​​não podem começar com um dígito.

Uma variável deve ser declarada antes de ser usada. Use ovar palavra-chave para declarar variáveis.

Declaração de variável em TypeScript

A sintaxe de tipo para declarar uma variável no TypeScript é incluir dois pontos (:) após o nome da variável, seguido por seu tipo. Assim como no JavaScript, usamos ovar palavra-chave para declarar uma variável.

Quando você declara uma variável, você tem quatro opções -

  • Declare seu tipo e valor em uma instrução.

  • Declare seu tipo, mas nenhum valor. Nesse caso, a variável será definida como indefinida.

  • Declare seu valor, mas nenhum tipo. O tipo de variável será definido para o tipo de dados do valor atribuído.

  • Não declare nem valor nem tipo. Nesse caso, o tipo de dados da variável será qualquer e será inicializado como indefinido.

A tabela a seguir ilustra a sintaxe válida para declaração de variável conforme discutido acima -

S.No. Sintaxe e descrição da declaração de variável
1

var name:string = ”mary”

A variável armazena um valor do tipo string

2

var name:string;

A variável é uma variável de string. O valor da variável é definido como indefinido por padrão

3 -

var name = ”mary”

O tipo da variável é inferido do tipo de dados do valor. Aqui, a variável é do tipo string

4

var name;

O tipo de dados da variável é qualquer. Seu valor é definido como indefinido por padrão.

Exemplo: Variáveis ​​em TypeScript

var name:string = "John"; 
var score1:number = 50;
var score2:number = 42.50
var sum = score1 + score2 
console.log("name"+name) 
console.log("first score: "+score1) 
console.log("second score: "+score2) 
console.log("sum of the scores: "+sum)

Na compilação, ele irá gerar o seguinte código JavaScript.

//Generated by typescript 1.8.10
var name = "John";
var score1 = 50;
var score2 = 42.50;
var sum = score1 + score2;
console.log("name" + name);
console.log("first score: " + score1);
console.log("second score : " + score2);
console.log("sum of the scores: " + sum);

O resultado do programa acima é dado abaixo -

name:John 
first score:50 
second score:42.50 
sum of the scores:92.50

O compilador TypeScript gerará erros, se tentarmos atribuir um valor a uma variável que não seja do mesmo tipo. Portanto, o TypeScript segue o Strong Typing. A sintaxe de tipagem forte garante que os tipos especificados em ambos os lados do operador de atribuição (=) sejam os mesmos. É por isso que o código a seguir resultará em um erro de compilação -

var num:number = "hello"     // will result in a compilation error

Asserção de tipo em TypeScript

O TypeScript permite alterar uma variável de um tipo para outro. O TypeScript se refere a esse processo como Asserção de Tipo . A sintaxe é colocar o tipo de destino entre <> símbolos e colocá-lo na frente da variável ou expressão. O exemplo a seguir explica este conceito -

Exemplo

var str = '1' 
var str2:number = <number> <any> str   //str is now of type number 
console.log(typeof(str2))

Se você passar o ponteiro do mouse sobre a instrução de asserção de tipo no Visual Studio Code, ele exibirá a alteração no tipo de dados da variável. Basicamente, permite que a afirmação do tipo S para T seja bem-sucedida se S for um subtipo de T ou T for um subtipo de S.

A razão pela qual não é chamado de "conversão de tipo" é que a conversão geralmente implica algum tipo de suporte de tempo de execução, enquanto "asserções de tipo" são puramente uma construção de tempo de compilação e uma maneira de fornecer dicas para o compilador sobre como você deseja que seu código ser analisado.

Na compilação, ele irá gerar o seguinte código JavaScript.

"use strict";
var str = '1';
var str2 = str; //str is now of type number 
console.log(typeof (str2));

Ele produzirá a seguinte saída -

string

Digitação inferida em TypeScript

Dado o fato de que o Typescript é fortemente tipado, esse recurso é opcional. O TypeScript também incentiva a digitação dinâmica de variáveis. Isso significa que o TypeScript incentiva a declaração de uma variável sem um tipo. Nesses casos, o compilador determinará o tipo da variável com base no valor atribuído a ela. O TypeScript encontrará o primeiro uso da variável dentro do código, determinará o tipo para o qual foi inicialmente definido e, em seguida, assumirá o mesmo tipo para essa variável no restante do seu bloco de código.

O mesmo é explicado no seguinte snippet de código -

Exemplo: digitação inferida

var num = 2;    // data type inferred as  number 
console.log("value of num "+num); 
num = "12";
console.log(num);

No snippet de código acima -

  • O código declara uma variável e define seu valor como 2. Observe que a declaração da variável não especifica o tipo de dados. Assim, o programa usa a tipagem inferida para determinar o tipo de dados da variável, ou seja, ele atribui o tipo do primeiro valor para o qual a variável é definida. Nesse caso,num é definido como o número do tipo.

  • Quando o código tenta definir o valor da variável como string. O compilador gera um erro porque o tipo da variável já está definido como número.

Ele produzirá a seguinte saída -

error TS2011: Cannot convert 'string' to 'number'.

Escopo da variável TypeScript

O escopo de uma variável especifica onde a variável é definida. A disponibilidade de uma variável dentro de um programa é determinada por seu escopo. As variáveis ​​TypeScript podem ser dos seguintes escopos -

  • Global Scope- As variáveis ​​globais são declaradas fora das construções de programação. Essas variáveis ​​podem ser acessadas de qualquer lugar em seu código.

  • Class Scope - Essas variáveis ​​também são chamadas fields. Os campos ou variáveis ​​de classe são declarados dentro da classe, mas fora dos métodos. Essas variáveis ​​podem ser acessadas usando o objeto da classe. Os campos também podem ser estáticos. Os campos estáticos podem ser acessados ​​usando o nome da classe.

  • Local Scope - Variáveis ​​locais, como o nome sugere, são declaradas dentro das construções como métodos, loops, etc. Variáveis ​​locais são acessíveis apenas dentro da construção onde são declaradas.

O exemplo a seguir ilustra escopos de variáveis ​​no TypeScript.

Exemplo: Escopo Variável

var global_num = 12          //global variable 
class Numbers { 
   num_val = 13;             //class variable 
   static sval = 10;         //static field 
   
   storeNum():void { 
      var local_num = 14;    //local variable 
   } 
} 
console.log("Global num: "+global_num)  
console.log(Numbers.sval)   //static variable  
var obj = new Numbers(); 
console.log("Global num: "+obj.num_val)

Na transpilação, o seguinte código JavaScript é gerado -

var global_num = 12;              //global variable 
var Numbers = (function () {
   function Numbers() {
      this.num_val = 13;          //class variable 
   }
   Numbers.prototype.storeNum = function () {
      var local_num = 14;        //local variable 
   };
   Numbers.sval = 10;            //static field 
   return Numbers;
}());

console.log("Global num: " + global_num);
console.log(Numbers.sval);       //static variable  

var obj = new Numbers();
console.log("Global num: " + obj.num_val);

Ele produzirá a seguinte saída -

Global num: 12
10
Global num: 13

Se você tentar acessar a variável local fora do método, ocorrerá um erro de compilação.

error TS2095: Could not find symbol 'local_num'.