TS:是JS的超集,即對JS的擴展,主要提供了型別系統和對ES6+的支持,但TS最侄訓轉換為js代碼去執行,
特點:
1. 始于JavaScript, 歸于JavaScript
2. 強大的型別系統
3. 先進的JavaScript
| TypeScript | JavaScript | |
|---|---|---|
| 語言 | 面向物件編程語言 | 面向腳本編程 |
| 是否支持可選引數 | 支持 | 不支持 |
| 是否支持靜態型別 | 支持 | 不支持 |
| 是否支持介面 | 支持 | 不支持 |
基礎型別:
1. boolean
2. number
3. String
4. undefined和null(默認情況下null和undefined是所有型別的子型別)
5. 陣列
6. 元組:表示一個已知元素數量和型別的陣列,各元素的型別不必相同
7. object:表示非原始型別,也就是除number、string、boolean之外的型別
8. 列舉:為一組數值賦予友好的名字
9. any:不清楚型別的變數指定一個型別
10. void
11. 聯合型別(Union Types) (表示取值可以為多種型別中的一種)
12. 型別斷言:可以用來手動指定一個值的型別,
13. 型別推斷:TS會在沒有明確的指定型別的時候推測出一個型別,
a. 定義變數時賦值了,推斷為對應的型別,
b. 定義變數時沒有賦值,推斷為any型別,
類:
1. 繼承: 類從基類中繼承了屬性和方法,通過 extends 實作,
2. 修飾符: public(默認)、private(不能在宣告它的類的外部訪問)、protected(子類可以訪問),
3. 存取器: TypeScript支持通過getters/setters來截取對物件成員的訪問,它能幫助你有效的控制對物件成員的訪問,
4. 靜態屬性:靜態屬性:是類物件的屬性;非靜態屬性:是類的實體物件的屬性,
5. 抽象類: 不能被實體化,用abstract修飾,
介面:
(介面是物件的狀態(屬性)和行為(方法)的抽象(描述))核心原則之一是對值所具有的結構進行類類檢查,
1. readonly VS const: 判斷該用readonly還是const的方法是看要把它作為變數使用還是作為一個屬性,作為變數使用的話用const,若作為屬性則使用readonly,
2.型別別:實作介面
一個類可以實作多個介面
一個介面可以繼承多個介面
3. 介面也可以相互繼承
#函式型別
泛型:
指在定義函式、介面或類的時候,不預先指定具體的型別,而在使用的時候再指定具體型別的一種特性,
多載:
函式名相同,而形參不同的多個函式,
在JS中,由于弱型別的特點和形參與實參可以不匹配,是沒有函式多載這一說的,
但在TS中,與其它面向物件的語言(如Java)就存在此語法,
什么是建構式,其作用:
建構式是一種特殊的方法,主要用于創建物件時初始化物件,即給物件成員屬性賦值,和new關鍵字一起使用,而TS的建構式通過關鍵字constructor實作,并用this關鍵字來訪問當前類中的屬性和方法,
為什么要用TS:
1. TS在編譯時就可以暴露問題,而JS則在運行時才可以發現,
2. TS作為一種強型別,明確知道資料型別,代碼的可讀性高,便于理解,
什么是泛型:
在定義時不去指定型別,等使用時才去指定,
什么是實體化:
一般創建一個類后并不能直接對屬性和方法進行訪問,必須對類進行實體化,需要創建一個物件,創建物件通過new關鍵字來實作,通過‘.’來訪問屬性和方法,
什么是方法重寫:
子類可以直接繼承父類的方法,直接使用,但有時子類并不想原封不動的繼承父類中的方法,而是需要做一定的修改,就是重寫,重寫的作用在于子類可以根據需要定義自己的特定行為,即子類能夠根據需要實作父類方法,
什么是可索引型別介面:
一般用來約束陣列和物件
never和void的區別:
void表示沒有任何型別(可以賦值為null和undefined);
never表示不包含任何值,永遠沒有值;
void回傳值型別的函式可以正常運行,而never的則無法執行,也無法終止,會拋出例外,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/548428.html
標籤:其他
上一篇:vue全家桶進階之路19:webpack資源打包工具
下一篇:[HTML]表單標簽(form表單域、input輸入表單、label標簽、select下拉表單、textarea文本域)
