TypeScript教程(三)變量聲明

一、變量聲明

變量是一種使用方便的占位符,用于引用計算機內存地址,可以將變量看做存儲數據的容器

命名規則:

1.變量名稱可以包含數字和字母

2.除了下劃線_和美元$符號外,不能包含其他特殊字符,包括空格

3.變量名不能以數字開頭

以下四種方式聲明變量:

1.聲明變量的類型及初始值:

var [變量名] : [類型] = 值;var uname:string = "SSS"

2.聲明變量的類型,但沒有初始值,變量值會設置為undefined:

var [變量名] = [類型];var uname = string

3.聲明變量名和初始值,但不設置類型,該變量可以為任意類型

var [變量名] = 值;var uname = "SSS"

4.聲明變量沒有設置類型和初始值,類型可以是任意類型,默認初始值為undefined:

var [變量名]var uname;

示例:

ts:

var uname:string = "Runoob";
var score1:number = 50;
var score2:number = 42.50
var sum = score1 + score2
console.log("名字: "+uname)
console.log("第一個科目成績: "+score1)
console.log("第二個科目成績: "+score2)
console.log("總成績: "+sum)

注:變量不要使用name,否則會與DOM中的全局window對象下的name屬性出現重名

js:

var uname = "Runoob";
var score1 = 50;
var score2 = 42.50;
var sum = score1 + score2;
console.log("名字: " + uname);
console.log("第一個科目成績: " + score1);
console.log("第二個科目成績: " + score2);
console.log("總成績: " + sum);

結果:

名字: Runoob
第一個科目成績: 50
第二個科目成績: 42.5
總成績: 92.5

二、類型斷言(Type Assertion)

類型斷言可以用來手動指定一個值的類型,即允許變量從一種類型改為另一種類型

語法格式:

<類型> 值或值 as 類型

示例:

var str = '1' 
var str2:number = <number> <any> str   //str、str2 是 string 類型
console.log(str2)

TypeScript是如何確定單個斷言是否足夠:

當S類型是T類型的子集,或者T類型是S類型的子集時,S能被成功斷言為T,這是為了在進行類型斷言時提供額外的安全性,完全毫無根據的斷言是危險的,除非用any

此之所以不能被稱為類型轉換,是因為轉換通常意味著某種運行時的支持,但是,類型斷言是一個編譯時語法,同時,也是一種為編譯器提供關于如何分析代碼的方法

以上代碼編譯后的結果:

var str = '1';
var str2 = str;  //str、str2 是 string 類型
console.log(str2);

三、類型推斷

當類型沒有給出時,TypeScript編譯器利用類型推斷來推斷類型

如果由于缺乏聲明而不能推斷出類型,那么它的類型被視作默認的動態any類型

var num = 2;    // 類型推斷為 number
console.log("num 變量的值為 "+num); 
num = "12";    // 編譯錯誤
console.log(num);

?第一行代碼聲明了變量num并=設置初始值為2,注意變量聲明沒有指定類型,因此,程序使用類型推斷來確定變量的數據類型,第一次賦值為2,num設置為number類型

第三行,當再次為變量設置字符串類型的值時,編譯會錯誤,因為變量已經設置了number類型

error TS2322: Type '"12"' is not assignable to type 'number'.

四、變量作用域

變量作用域指定了變量定義的位置

程序中變量的可用性由變量作用域決定

TypeScript有以下幾種作用域:

1.全局作用域:全局變量定義在程序結構的外部,它可以在代碼的任何位置使用

2.類作用域:這個變量也可以稱為字段,類變量聲明在一個類里頭,但在類的方法外面,該變量可以通過類的對象來訪問,類變量可以是靜態的,靜態的變量可以通過類名直接訪問

3.局部作用域:局部變量,局部變量只能在聲明他的一個代碼塊(方法)中使用

示例:

ts:

var global_num = 12          // 全局變量
class Numbers { num_val = 13;             // 實例變量static sval = 10;         // 靜態變量storeNum():void { var local_num = 14;    // 局部變量} 
} 
console.log("全局變量為: "+global_num)  
console.log(Numbers.sval)   // 靜態變量
var obj = new Numbers(); 
console.log("實例變量: "+obj.num_val)

js:

var global_num = 12; // 全局變量
var Numbers = /** @class */ (function () {function Numbers() {this.num_val = 13; // 實例變量}Numbers.prototype.storeNum = function () {var local_num = 14; // 局部變量};Numbers.sval = 10; // 靜態變量return Numbers;
}());
console.log("全局變量為: " + global_num);
console.log(Numbers.sval); // 靜態變量
var obj = new Numbers();
console.log("實例變量: " + obj.num_val);

結果:

全局變量為: 12
10
實例變量: 13

如果在方法外調用局部變量會報錯:

error TS2322: Could not find symbol 'local_num'.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37490.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37490.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37490.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用GUI Guider工具在MCU上開發嵌入式GUI應用 (1) - GUI Guider簡介及安裝

使用GUI Guider工具在MCU上開發嵌入式GUI應用 (1) - GUI Guider簡介及安裝 受限于每篇文章最多只能貼9張圖的限制&#xff0c;這個教程被拆分成了多篇文章連載發布&#xff0c;完整目錄結構如下圖x所示。后續會發布完整教程的pdf文件&#xff0c;敬請期待。 圖x 完整教程文檔…

機器學習 | Python實現KNN(K近鄰)模型實踐

機器學習 | Python實現KNN(K近鄰)模型實踐 目錄 機器學習 | Python實現KNN(K近鄰)模型實踐基本介紹模型原理源碼設計學習小結參考資料基本介紹 一句話就可以概括出KNN(K最近鄰算法)的算法原理:綜合k個“鄰居”的標簽值作為新樣本的預測值。更具體來講KNN分類過程,給定一個訓…

網絡安全(自學)

想自學網絡安全&#xff08;黑客技術&#xff09;首先你得了解什么是網絡安全&#xff01;什么是黑客&#xff01; 網絡安全可以基于攻擊和防御視角來分類&#xff0c;我們經常聽到的 “紅隊”、“滲透測試” 等就是研究攻擊技術&#xff0c;而“藍隊”、“安全運營”、“安全…

無服務器架構發布啦!

導讀Serverless 1.15.2 已發布。The Serverless Framework (無服務器架構&#xff09;允許你自動擴展、按執行付費、將事件驅動的功能部署到任何云。 目前支持 AWS Lambda、Apache OpenWhisk、Microsoft Azure&#xff0c;并且正在擴展以支持其他云提供商。 Serverless 降低了…

nodejs+vue+elementui電影訂票網站系統_wqc3k

電影訂票系統在國內有很多值得借鑒的例子&#xff0c;功能也都趨于完善&#xff0c;因此此次電影訂票系統將輕量化開發&#xff0c;要完成以下功能&#xff1a; &#xff08;1&#xff09;要支持完整的用戶注冊&#xff0c;登錄功能&#xff0c;賬號的管理通過管理員來實現。 &…

PHP中的16個危險函數

php中內置了許許多多的函數&#xff0c;在它們的幫助下可以使我們更加快速的進行開發和維護&#xff0c;但是這個函數中依然有許多的函數伴有高風險的&#xff0c;比如說一下的16個函數不到萬不得已不盡量不要使用&#xff0c;因為許多“高手”可以通過這些函數抓取你的漏洞。 …

【Spring】核心容器——集合注入

1、集合種類 數組 List Set Map Properties 2、配置 <bean id"bookDao" class"dao.impl.BookDaoImpl"><property name"array"><array><value>2</value><value>4</value><value>6</value&g…

Docker升級后,出現Error response from daemon: Unknown runtime specified docker-runc

現象&#xff1a;docker升級版本后&#xff0c;重啟docker服務出現&#xff1a; [rootDocker scripts]# docker start registry Error response from daemon: Unknown runtime specified docker-runc Error: failed to start containers: registry解決辦法&#xff1a; 改完之…

大數據Flink(六十三):SqlClient工具的使用

文章目錄 SqlClient工具的使用 一、???????入門

【獨立版】新零售社區團購電商系統生鮮水果商城興盛優選十薈團源碼

【獨立版】新零售社區團購電商系統生鮮水果商城興盛優選十薈團源碼

私有服務Nexus安裝

下載地址&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1xpOyRg7SfJsui5cL8PVRDg 提取碼&#xff1a;i574 解壓&#xff1a; tar -zxvf nexus-3.12.1-01-unix.tar.gz生成2個文件夾 nexus-3.12.1-01 和 sonatype-work用root用戶給普通用戶授權這2個文件夾的權限 例…

k8s認證詳解 k8s證書詳解 2023推薦

推薦閱讀 https://www.yii666.com/blog/478731.html?actiononAll 在 Kube-apiserver 中提供了很多認證方式&#xff0c;其中最常用的就是 TLS 認證&#xff0c;當然也有 BootstrapToken&#xff0c;BasicAuth 認證等&#xff0c;只要有一個認證通過&#xff0c;那么 Kube-api…

NeMo 聲紋識別VPR-實戰

聲紋識別(VPR) ,生物識別技術的一種,也稱為說話人識別 ,是從說話人發出的語音信號中提取聲紋信息,從應用上看,可分為: 說話人辨認(Speaker Identification):用以判斷某段語音是若干人中的哪一個所說的,是“多選一”問題;說話人確認(Speaker Verification):用以確認某…

Leetcode-每日一題【劍指 Offer 31. 棧的壓入、彈出序列】

題目 輸入兩個整數序列&#xff0c;第一個序列表示棧的壓入順序&#xff0c;請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如&#xff0c;序列 {1,2,3,4,5} 是某棧的壓棧序列&#xff0c;序列 {4,5,3,2,1} 是該壓棧序列對應的一個彈出序列&#xf…

在SAP上使用 LiquidUI Android 掃描條形碼/QR 碼

LiquidUI Android 可使用安卓移動設備的內置攝像頭掃描條形碼和二維碼&#xff0c;為輸入框填充數值。因此&#xff0c;無需附加任何第三方設備進行掃描。 LiquidUI Android 還提供了掃描功能&#xff0c;如 Accessible-Enter&#xff08;俗稱自動輸入&#xff09;和 Accessib…

kotlin + LiveData 測試

viewModel測試&#xff1a;https://developer.android.com/codelabs/basic-android-kotlin-compose-test-viewmodel#3 androidTestImplementation "org.jetbrains.kotlin:kotlin-test:1.9.0"androidTestImplementation org.jetbrains.kotlinx:kotlinx-coroutines-tes…

基于粒子群改進深度信念網絡的回歸分析,基于PSO-DBN的回歸分析

目錄 背影 DBN神經網絡的原理 DBN神經網絡的定義 受限玻爾茲曼機(RBM) 粒子群算法的原理 DBN的粒子群改進深度信念網絡的回歸分析 基本結構 主要參數 數據 MATALB代碼 結果圖 展望 背影 DBN是一種深度學習神經網絡,擁有提取特征,非監督學習的能力,是一種非常好的分類算…

介紹一些操作系統— CentOS 系統

介紹一些操作系統— CentOS 系統 CentOS 系統 CentOS 是 Linux 發行版之一&#xff0c;是免費的、開源的、可以重新分發的開源操作系統。 CentOS Linux發行版是一個穩定的&#xff0c;可預測的&#xff0c;可管理的和可復現的平臺&#xff0c;源于 Red Hat Enterprise Linux…

SAP MM學習筆記22- 購買發注的項目種類(明細Category)

SAP中控制購買流程的是購買發注頁面中購買發注明細行的項目種類&#xff08;明細Category&#xff09;欄目。 ?項目種類&#xff08;明細Category&#xff09;有&#xff1a; 1&#xff0c; 標準 2&#xff0c;K 受托品 3&#xff0c;L 外注 4&#xff0c;S 仕入先直送…

Keepalived+http高可用實戰

環境準備&#xff1a; 兩臺安裝了keepalived的服務器 ip&#xff1a;192.168.134.170;192.168.134.172 1、安裝http服務 yum install httpd -y2、寫一個測試頁面 [rootlocalhost ~]# echo "hostname -I,web1 test page. " > /var/www/html/inde [rootlocalho…