TypeScript - Variabili

Una variabile, per definizione, è "uno spazio denominato nella memoria" che memorizza i valori. In altre parole, funge da contenitore per i valori in un programma. Le variabili TypeScript devono seguire le regole di denominazione JavaScript -

  • I nomi delle variabili possono contenere alfabeti e cifre numeriche.

  • Non possono contenere spazi e caratteri speciali, tranne il carattere di sottolineatura (_) e il segno del dollaro ($).

  • I nomi delle variabili non possono iniziare con una cifra.

Una variabile deve essere dichiarata prima di essere utilizzata. Utilizzare ilvar parola chiave per dichiarare le variabili.

Dichiarazione di variabili in TypeScript

La sintassi del tipo per dichiarare una variabile in TypeScript consiste nell'includere i due punti (:) dopo il nome della variabile, seguito dal suo tipo. Proprio come in JavaScript, utilizziamo l'estensionevar parola chiave per dichiarare una variabile.

Quando dichiari una variabile, hai quattro opzioni:

  • Dichiara il suo tipo e valore in un'unica istruzione.

  • Dichiara il suo tipo ma nessun valore. In questo caso, la variabile sarà impostata su undefined.

  • Dichiara il suo valore ma nessun tipo. Il tipo di variabile verrà impostato sul tipo di dati del valore assegnato.

  • Non dichiarare né valore né tipo. In questo caso, il tipo di dati della variabile sarà qualsiasi e verrà inizializzato su undefined.

La tabella seguente illustra la sintassi valida per la dichiarazione delle variabili come discusso sopra:

S.No. Sintassi e descrizione della dichiarazione di variabili
1.

var name:string = ”mary”

La variabile memorizza un valore di tipo stringa

2.

var name:string;

La variabile è una variabile stringa. Il valore della variabile è impostato su undefined per impostazione predefinita

3.

var name = ”mary”

Il tipo di variabile viene dedotto dal tipo di dati del valore. Qui, la variabile è di tipo stringa

4.

var name;

Il tipo di dati della variabile è qualsiasi. Il suo valore è impostato su undefined per impostazione predefinita.

Esempio: variabili in 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)

Durante la compilazione, genererà il seguente codice 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);

L'output del programma sopra è dato di seguito:

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

Il compilatore TypeScript genererà errori, se tentiamo di assegnare un valore a una variabile che non è dello stesso tipo. Quindi, TypeScript segue la tipizzazione forte. La sintassi di digitazione forte garantisce che i tipi specificati su entrambi i lati dell'operatore di assegnazione (=) siano gli stessi. Questo è il motivo per cui il codice seguente risulterà in un errore di compilazione:

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

Asserzione di tipo in TypeScript

TypeScript consente di modificare una variabile da un tipo a un altro. TypeScript fa riferimento a questo processo come Asserzione del tipo . La sintassi consiste nel mettere il tipo di destinazione tra i simboli <> e posizionarlo davanti alla variabile o all'espressione. Il seguente esempio spiega questo concetto:

Esempio

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

Se si passa il puntatore del mouse sull'istruzione di asserzione del tipo in Visual Studio Code, viene visualizzata la modifica nel tipo di dati della variabile. Fondamentalmente consente l'affermazione dal tipo S a T se S è un sottotipo di T o T è un sottotipo di S.

Il motivo per cui non viene chiamato "casting di tipo" è che il casting generalmente implica una sorta di supporto di runtime mentre le "asserzioni di tipo" sono puramente un costrutto in fase di compilazione e un modo per fornire suggerimenti al compilatore su come si desidera che il codice essere analizzato.

Durante la compilazione, genererà il seguente codice JavaScript.

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

Produrrà il seguente output:

string

Digitazione dedotta in TypeScript

Dato che Typescript è fortemente tipizzata, questa caratteristica è opzionale. TypeScript incoraggia anche la digitazione dinamica delle variabili. Ciò significa che TypeScript incoraggia la dichiarazione di una variabile senza un tipo. In tali casi, il compilatore determinerà il tipo di variabile in base al valore ad essa assegnato. TypeScript troverà il primo utilizzo della variabile all'interno del codice, determinerà il tipo su cui è stato inizialmente impostato e quindi assumerà lo stesso tipo per questa variabile nel resto del blocco di codice.

Lo stesso è spiegato nel seguente frammento di codice:

Esempio: digitazione dedotta

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

Nello snippet di codice sopra -

  • Il codice dichiara una variabile e ne imposta il valore su 2. Si noti che la dichiarazione della variabile non specifica il tipo di dati. Pertanto, il programma utilizza la tipizzazione dedotta per determinare il tipo di dati della variabile, ovvero assegna il tipo del primo valore su cui è impostata la variabile. In questo caso,num è impostato sul numero del tipo.

  • Quando il codice tenta di impostare il valore della variabile su stringa. Il compilatore genera un errore poiché il tipo della variabile è già impostato su numero.

Produrrà il seguente output:

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

Ambito della variabile TypeScript

L'ambito di una variabile specifica dove viene definita la variabile. La disponibilità di una variabile all'interno di un programma è determinata dal suo ambito. Le variabili TypeScript possono essere dei seguenti ambiti:

  • Global Scope- Le variabili globali sono dichiarate al di fuori dei costrutti di programmazione. È possibile accedere a queste variabili da qualsiasi punto all'interno del codice.

  • Class Scope - Queste variabili sono anche chiamate fields. I campi o le variabili di classe vengono dichiarati all'interno della classe ma al di fuori dei metodi. È possibile accedere a queste variabili utilizzando l'oggetto della classe. I campi possono anche essere statici. È possibile accedere ai campi statici utilizzando il nome della classe.

  • Local Scope - Le variabili locali, come suggerisce il nome, sono dichiarate all'interno dei costrutti come metodi, cicli, ecc. Le variabili locali sono accessibili solo all'interno del costrutto in cui sono dichiarate.

L'esempio seguente illustra gli ambiti delle variabili in TypeScript.

Esempio: ambito variabile

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)

Durante il transpiling, viene generato il seguente codice JavaScript:

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);

Produrrà il seguente output:

Global num: 12
10
Global num: 13

Se si tenta di accedere alla variabile locale al di fuori del metodo, si verifica un errore di compilazione.

error TS2095: Could not find symbol 'local_num'.