国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

TypeScript 變量

2021-07-08 11:34 更新

根據定義,變量是“內存中的命名空間”,用于存儲值。換句話說,它充當程序中值的容器。TypeScript 變量必須遵循如下的 JavaScript 命名規(guī)則:

  • 變量名稱可以包含字母和數字。

  • 它們不能包含空格和特殊字符,除了下劃線(_)和美元($)符號。

  • 變量名不能以數字作為開頭。

在使用變量之前必須先聲明變量,使用 var 關鍵字聲明變量。

TypeScript中的變量聲明

在 TypeScript 中聲明變量的類型語法是在變量名后包含冒號(:),然后跟上類型。就像在 JavaScript 中,我們使用 var 關鍵字來聲明變量。

當你聲明一個變量,你有四個選項:

  • 在一個語句中聲明變量的類型和值。

聲明類型
  • 聲明變量的類型,但是不聲明值。在這種情況下,該變量將被設置為 undefined。

未定義
  • 聲明它的值,但是不聲明類型。變量類型將被設置為 any。

任何
  • 既不聲明值也不聲明類型。在這種情況下,變量的數據類型將為 any,并將初始化為 undefined。

任何和未定義

下表說明了如上所述的變量聲明的有效語法:

序號 變量聲明語法和說明
1

var name:string=“mary

該變量存儲 string 類型的值

2

var name:string;

該變量是一個 string 變量。默認情況下,變量的值設置為 undefined

3

var name=“mary

變量的類型是從值的數據類型推斷出來的。這里,變量是 string 類型

4

var name;

變量的數據類型是 any。默認情況下,它的值設置為 undefined。

示例: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)

在編譯時,它會生成以下 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);

上述程序的輸出如下:

name:John 
first score:50 
second score:42.5 
sum of the scores:92.5

如果我們試圖將一個值分配給不同類型的變量,TypeScript 編譯器會產生錯誤。因此,TypeScript 遵循強類型,強類型語法可確保在賦值運算符 (=) 的任一側指定的類型是相同的。這就是下面的代碼會導致編譯錯誤的原因:

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

TypeScript類型斷言

TypeScript 允許將變量從一種類型更改為另一種類型。TypeScript 將此過程稱為類型斷言(Type Assertion)。語法是將目標類型放在<>符號之間,并將其放在變量或表達式的前面。下面的示例解釋了這個概念:

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

如果你將鼠標指針懸停在 Visual Studio 代碼中的類型斷言語句上,它將顯示變量數據類型的更改?;旧?,如果 S 是 T 的一個子類型,或者 T 是 S 的一個子類型,它允許從類型 S 到 T 的斷言成功。

為什么它不叫“類型轉換”呢?一般轉換意味著某種運行時的支持,而“類型斷言”純粹是一個編譯時構造,是一種向編譯器提供有關如何分析代碼的提示方法。

在編譯時,它會生成以下 JavaScript 代碼:

//Generated by typescript 1.8.10
var str = '1';
var str2 = str;     //str is now of type number
console.log(str2);

它會產生下面的輸出:

1

TypeScript中的類型推論

Typescript 是強類型的,這個特性是可選的。TypeScript 也支持變量的動態(tài)類型。這意味著,在 TypeScript 支持聲明一個沒有類型的變量。在這樣的情況下,編譯器會根據分配給它的值確定變量的類型。TypeScript 將在代碼中找到變量的第一個用法,以確定它最初設置的類型,然后在代碼塊的其余部分中為該變量假定相同的類型。

下面的代碼片段解釋了上述概念:

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

在上面的代碼片段中:

  • 該代碼聲明一個變量并將其值設置為2。注意:變量聲明并沒有指定數據類型。因此,該程序使用類型推論來確定變量的數據類型,即,它分配該變量被設置的第一個值的類型。在這種情況下,num 被設置為類型 number。

  • 當代碼試圖將變量的值設置為 string 時,編譯器將會拋出錯誤,因為變量的類型已設置為 number。

它會產生如下的輸出:

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

TypeScript變量的作用域

一個變量的作用域指定變量的定義位置。程序中變量的可用性是由它的作用域決定的。TypeScript 變量可以具有以下作用域:

  • 全局作用域 - 全局變量在編程結構之外進行聲明。這些變量可以從代碼內的任何地方進行訪問。

  • 類作用域 - 這些變量也稱為字段。字段或類變量在類中進行聲明,但在方法之外。這些變量可以使用的類的對象進行訪問。字段也可以是靜態(tài)的。靜態(tài)字段可以使用類名來訪問。

  • 局部作用域 - 局部變量,顧名思義,局部變量在方法,循環(huán)等結構中聲明,局部變量只能在聲明它們的結造中訪問。

下面的例子說明了 TypeScript 變量的作用域:

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) 

在轉換時,會生成以下 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);

它會產生如下的輸出:

Global num: 12
10
Global num: 13

如果您嘗試訪問方法外部的局部變量,則會導致編譯錯誤:

error TS2095: Could not find symbol 'local_num'.
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號