刷寫網絡卡MAC地址
安裝:
npm i -g typescript
使用:
需要編譯成javascript來使用 : tsc 檔案
也可以配置tsconfig.json後 直接在控制檯 tsc ,不再需要輸入檔名;
當有多個配置檔案時,指定啟用某一個可以用:tsc -p 檔案路徑
常用配置選項:
outDir:指定編譯輸出目錄;
target:指定編譯的程式碼版本,預設es3;
watch:自動編譯;
strictNullChecks:嚴格檢測null或undefined
lib:擴充套件庫,解決taget編譯es6一下不支援的api
include:指定目錄或檔案編譯;
型別標註:
1.基礎型別:string、number、boollean
注意:null和undefined可以是子型別,所以上面基礎型別可以賦值為null和undefined
2.null和undefined型別
3.物件型別
有3中具體定義方法:具體使用環境,根據功能選擇
a.物件字面量宣告:
缺點:不易複用和維護
b.介面宣告:
type和interface的區別:interface重複聲明後,會自動合併,type不能重複宣告
優點:複用性高;
缺點:只能作為型別標註,不能作為具體值
c.類與建構函式:
優點:功能強大,既可以對應型別,又可以同時定義實體
缺點:複雜
陣列:
基礎寫法:
元組型別:類似陣列,但可以是不同型別
注意只能用方法進行新增刪減,新增的型別也只能是定義的型別
列舉型別:組織手機關聯資料,賦予友好的名字
注意:第一個列舉預設值為0;非第一個,預設值為上一個數字列舉值+1;一旦設定就不能修改;如果前一個列舉值為字串,後一個必須手動賦值
無值型別:void
Never型別:
一個函式永遠不能return時,比如丟擲錯誤時
任意型別:
不指定型別時,預設是any,任意型別
未知型別:unknow 3.0版本新增
僅能賦值給unknow和any,沒有任何屬性和方法
函式型別:
介面詳解:
1.基本用法
擴充套件屬性,這種寫法只能是同類型
2.介面描述函式
3.介面合併:注意非函式同名函式,必須保持型別一致,不然會報錯
高階型別:
1.聯合型別;一個變數為多個型別之一時,“或”的關係
2.交叉型別;“且”的關係
3.型別推導 :可以節省程式碼
let str = 'yxy'; 設定值後,ts會推導str為string型別
就相當於 let str ='yxy' 和 let str:string='yxy' 作用一樣
函式也會根據返回值來推導型別值
4.型別斷言:標註一個更加精確的
另外一種寫法 (img as HTMLImageElement).src 效果一樣
函式:
1.函式標註
2.可選引數和預設引數
3.剩餘引數,注意:剩餘引數是一個數組
4.函式過載:不同條件,函式用來返回不同的結果
面向物件程式設計-類:
1.建構函式引數
方式1:
方式2:使用public 簡便
2.修飾符
3.抽象類:用abstract關鍵字定義抽象類和抽象方法,抽象類中的抽象方法不包含具體實現並且必須在派生類(抽象類的子類)中實現
4.對類的約束implements
5.介面也可以繼承後再使用
型別系統:
1.型別保護:在js中通過判斷處理一些邏輯,在Ts中,根據判斷邏輯結果,縮小範圍,稱為型別保護
用typeof 和instanceof 或者in 來判斷
typeof 能將值轉為為型別;
自定義型別判斷:data is
2型別操作:
keyof使用,動態獲取key欄位
in使用:in後面必須是string和number型別
泛型:許多時候,標註的具體型別不能確定,就要使用泛型
1泛型-函式 :類似於函式引數
2.泛型介面
模組系統:
1.在TS中引入JS匯出的模組
配置項中設定allowJs:true
2.TS中引入json檔案
配置項設定resolveJsonModule:true
名稱空間:
在TS中,export和import為外部模組,TS中還支援一種內部模組namespace,單純在檔案內部隔離作用域;
注意:命名相同的空間,會自動合併!!
裝飾器:
在TS中,不修改類程式碼的基礎上通過新增標註的方式來對類進行擴充套件的一種方式
啟用裝飾器:
裝飾器詳細:
注意:裝飾器執行的順序不一樣,內部執行也有順序
先例項裝飾器:
屬性=》訪問符=》引數=》方法
然後靜態裝飾器:
屬性=》訪問符=》引數=》方法
最後類: 類
裝飾器可以傳參---用裝飾器工廠模式:
元資料:用來描述資料的資料