千鋒教育前端TypeScript入門視頻教程(陸神頂配版TS入門教程)

TypeScript可以說是一種強類型的JavaScript解決方案。
# TypeScript
TypeScript是JavaScript的超集,JavaScript(ES5和ES2015)的所有特性它都支持。
## 基礎
在TypeScript中聲明變量,需要加上類型聲明,如boolean或string等。通過靜態(tài)類型約束,在編譯時執(zhí)行類型檢查,這樣可以避免一些類型混用的低級錯誤。
### 基本類型(帶-為ts特有)
#### 布爾類型boolean
布爾類型是最簡單的數(shù)據(jù)類型,只有true和false兩種值。
下面定義了一個布爾類型的變量flag,并賦值為true。由于flag被初始化為布爾類型,如果再賦值為非boolean的其他類型值,編譯時會拋出錯誤。
```
let flag: boolean = true;
flag = 1; // 報錯,不能把數(shù)字類型的值賦值給布爾類型的變量
```
#### 數(shù)字類型number
在TypeScript中,數(shù)字都是浮點型。TypeScript同時支持二進制、八進制、十進制和十六進制字面量。
```
let binaryLiteral: number = 0b1010; // 二進制
let octalLiteral: number = 0o744; // 八進制
let decLiteral: number = 6; // 十進制
let hexLiteral: number = 0xf00d; // 十六進制
```
#### 字符串類型string
TypeScript支持使用單引號(')或雙引號(")來表示字符串類型。除此之外,還支持使用模版字符串反引號(`)來定義多行文本和內嵌表達式。使用 ${ expr } 的形式嵌入變量或表達式,在處理拼接字符串時很有用。
```
let name: string = "Angular";
let years: number = 5;
let words: string = `你好,今年是 ${ name } 發(fā)布 ${ years + 1 } 周年 `;
```
#### 數(shù)組類型array
TypeScript數(shù)組的操作類似于JavaScript數(shù)組的操作,TypeScript建議開發(fā)者最好只為數(shù)組元素賦一種類型的值。TypeScript有兩種數(shù)組定義方式。
```
// 定義方式1:在元素后面接上[]
let arr: number[] = [1,2];
// 定義方式2:使用數(shù)組泛型
let arr: Array<number> = [1,2]
```
#### 元組類型-tuple
元組類型用來表示已知元素數(shù)量和類型的數(shù)組,各元素的類型不必相同。數(shù)組合并了相同類型的對象,而元組(Tuple)合并了不同類型的對象。
下面定義了一個值分別為字符串和數(shù)字類型的元組:
```
let x: [string, number];
x = ['Angular', 25]; // 運行正常
x = [10, 'Angular']; // 報錯
console.log(x[0]); // 輸出 Angular
```
#### 枚舉類型-enum
Enum是用戶自定義的原生類型,根據(jù)設計文檔上的描述,它們是Number的子類,由一系列有名稱的值構成,這些值叫做元素。
枚舉是一個可被命名的整型常數(shù)的集合,枚舉類型為集合成員賦予有意義的名稱,增強了可讀性。
```
enum Color {Red, Green, Blue};
let c: Color = Color.Blue;
console.log(c); // 輸出 2
```
枚舉默認的下標是0,可以手動修改默認的下標值。例如:
```
enum Color {Red = 2, Blue, Green = 6};
let c: Color = Color.Blue;
console.log(c); // 輸出 3
```
#### 任意值類型-any
任意值是TypeScript針對編程時類型不明確的變量所使用的一種數(shù)據(jù)類型,它常用于以下三種情況。
· 當變量的值會動態(tài)變化時,比如來自用戶的輸入或第三方代碼庫,任意值類型可以讓這些變量跳過編譯階段的類型檢查。
```
let x: any = 1; // 數(shù)字類型
x = "I am a string"; // 字符串類型
x = false; // 布爾類型
```
· 在改寫現(xiàn)有代碼時,任意值允許在編譯時可選擇地包含或移除類型檢查。
```
let x: any = 4;
x.ifItExits(); // 正確,ifItExits方法在運行時可能存在,但是這里并不檢查
x.toFixed(); // 正確
```
· 在定義存儲各種類型數(shù)據(jù)的數(shù)組時。
```
let arrayList: any[] = [1, false, "fine"];
arrayList[1] = 100;