TypeScript 入門與區塊鏈項目實戰
內容描述
主要內容 精通TypeScript語法 在TypeScript中使用JavaScript庫使用Babel和Webpack工具 使用Angular、React和Vue框架構建TypeScript應用程序
目錄大綱
第Ⅰ部分精通TypeScript語法
第1章熟悉TypeScript 3
1.1 使用TypeScript編程的理由 3
1.2 典型的TypeScript工作流 7
1.3 使用TypeScript編譯器 8
1.4 了解Visual Studio Code 12
1.5 本章小結14
第2章基本類型與自定義類型15
2.1 聲明變量類型15
2.1.1 基本類型標註16
2.1.2 函數聲明中的類型20
2.1.3 union類型21
2.2 定義自定義類型23
2.2.1 使用type關鍵字24
2.2.2 將類用作自定義類型25
2.2.3 將接口用作自定義類型27
2.2.4 結構化還是名義類型系統29
2.2.5 自定義類型的unions 31
2.3 any和unknown類型,以及用戶定義的類型保護33
2.4 微型項目35
2.5 本章小結36
第3章面向對象編程的類和接口37
3.1 類37
3.1.1 開始了解類繼承38
3.1.2 訪問修飾符public、private、protected 39
3.1.3 靜態變量及singleton(單例)設計模式示例41
3.1.4 super()方法與super關鍵字43
3.1.5 抽像類45
3.1.6 方法重載48
3.2 使用interface 53
3.2.1 執行合同53
3.2.2 擴展接口55
3.2.3 接口編程57
3.3 本章小結60
第4章使用枚舉和泛型61
4.1 使用枚舉61
4.1.1 數字型枚舉61
4.1.2 字符串枚舉64
4.1.3 使用常量枚舉66
4.2 使用泛型67
4.2.1 理解泛型67
4.2.2 創建自己的泛型類型72
4.2.3 創建泛型函數76
4.2.4 強制執行高階函數的返回類型80
4.3 本章小結81
第5章裝飾器與高級類型83
5.1 裝飾器84
5.1.1 創建類裝飾器85
5.1.2 創建函數裝飾器90
5.2 映射類型92
5.2.1 只讀映射類型92
5.2.2 聲明自己的映射類型96
5.2.3 其他內置的映射類型97
5.3 條件類型99
5.4 本章小結104
第6章開發工具集105
6.1 源映射106
6.2 TSLint linter 108
6.3 使用Webpack綁定代碼111
6.3.1 使用Webpack綁定JavaScript 112
6.3.2 使用Webpack綁定TypeScript 116
6.4 使用Babel編譯器119
6.4.1 在JavaScript中使用Babel 122
6.4.2 在TypeScript中使用Babel 124
6.4.3 在TypeScript與Webpack中使用Babel 126
6.5 工具介紹128
6.5.1 Deno介紹128
6.5.2 ncc介紹129
6.6 本章小結132
第7章在項目中同時使用TypeScript和JavaScript 133
7.1 類型定義文件133
7.1.1 了解類型定義文件134
7.1.2 類型定義文件與IDE 135
7.1.3 shim與類型定義138
7.1.4 創建自己的類型定義文件139
7.2 使用JavaScript庫的TypeScript應用程序示例140
7.3 在JavaScript項目中使用TypeScript 148
7.4 本章小結151
第Ⅱ部分基於TypeScript的區塊鏈應用
第8章開發區塊鏈應用155
8.1 區塊鏈簡介156
8.1.1 加密哈希函數157
8.1.2 區塊由什麼組成159
8.1.3 什麼是區塊挖掘160
8.1.4 哈希和隨機數的迷你項目162
8.2 開發第一個區塊鏈164
8.2.1 項目結構164
8.2.2 創建一個原始區塊鏈167
8.2.3 使用工作證明創建區塊鏈170
8.3 本章小結173
第9章開發基於瀏覽器的區塊鏈節點175
9.1 運行區塊鏈Web應用176
9.1.1 項目結構176
9.1.2 使用npm腳本部署應用178
9.1.3 使用區塊鏈Web應用179
9.2 Web客戶端182
9.3 挖掘區塊187
9.4 使用crypto API生成哈希191
9.5 獨立的區塊鏈客戶端194
9.6 在瀏覽器中調試TypeScript 196
9.7 本章小結198
第10章使用Node.js、TypeScript和WebSocket進行客戶端-服務器通信199
10.1 使用最長鏈規則解決衝突200
10.2 為區塊鏈添加服務器202
10.3 項目結構203
10.4 項目的配置文件204
10.4.1 配置TypeScript編譯環境204
10.4.2 package.json包含什麼206
10.4.3 配置nodemon 207
10.4.4 運行區塊鏈App 208
10.5 WebSocket簡介213
10.5.1 HTTP和WebSocket協議的對比214
10.5.2 將數據從節點服務器推送到普通客戶端215
10.6 回顧通知工作流219
10.6.1 回顧服務器代碼221
10.6.2 回顧客戶端代碼231
10.7 本章小結240
第11章使用TypeScript開發Angular應用程序241
11.1 使用Angular CLI生成並運行一個新的應用程序242
11.2 查看生成的App 244
11.3 Angular服務和依賴注入250
11.4 使用ProductService注入的應用253
11.5 使用TypeScript進行抽象編程255
11.6 開始處理HTTP請求257
11.7 表單入門261
11.8 Router基礎265
11.9 本章小結269
第12章使用Angular開發區塊鏈客戶端271
12.1 啟動Angular區塊鏈應用程序271
12.2 回顧AppComponent 273
12.3 回顧TransactionFormComponent 277
12.4 回顧BlockComponent 278
12.5 回顧服務281
12.6 本章小結283
第13章使用TypeScript開發React.js應用程序285
13.1 使用React開發最簡單的網頁286
13.2 使用Create React App生成並運行一個新應用288
13.3 管理組件的狀態293
13.3.1 向基於類的組件添加狀態293
13.3.2 使用鉤子管理函數組件的狀態294
13.4 開發一個天氣應用程序297
13.4.1 向App組件添加狀態鉤子298
13.4.2 在App組件中使用useEffect鉤子獲取數據300
13.4.3 使用props 306
13.4.4 子組件如何將數據傳遞給其父組件311
13.5 Virtual DOM 313
13.6 本章小結314
第14章使用React.js開發區塊鏈客戶端315
14.1 啟動客戶端和消息服務器315
14.2 lib目錄中發生的變化318
14.3 smart App組件320
14.3.1 添加事務322
14.3.2 生成一個新區塊324
14.3.3 解釋useEffect()鉤子函數325
14.3.4 使用useCallback()鉤子的記憶化緩存(Memoization) 327
14.4 presentation組件——TransactionForm 330
14.5 presentation組件——PendingTransactionsPanel 333
14.6 presentation組件——BlocksPanel和BlockComponent 335
14.7 本章小結337
第15章使用TypeScript開發Vue.js應用程序339
15.1 使用Vue開發最簡單的Web頁面340
15.2 使用Vue CLI生成和運行新應用程序343
15.3 開發有路由支持的單頁應用程序349
15.3.1 使用Vue Router生成一個新應用程序350
15.3.2 在主視圖中顯示products列表353
15.3.3 使用Vue Router傳遞數據358
15.4 本章小結362
第16章用Vue.js開發區塊鏈客戶端365
16.1 啟動客戶端和消息服務器366
16.2 App組件369
16.3 presentation組件——TransactionForm 372
16.4 presentation組件——PendingTransactionsPanel 376
16.5 presentation組件——BlocksPanel和Block 378
16.6 本章小結382
後記382
附錄A JavaScript基礎知識383
A.1 如何運行代碼示例383
A.2 關鍵字let和const 383
A.2.1 var關鍵字和hoisting(提升) 384
A.2.2 使用let和const的塊級作用域385
A.3 字面量模板386
A.4 可選參數和默認值388
A.5 箭頭函數表達式389
A.6 rest運算符391
A.7 spread運算符393
A.8 解構394
A.8.1 解構對象394
A.8.2 解構數組397
A.9 類和繼承398
A.9.1 構造函數400
A.9.2 super關鍵字和super函數401
A.9.3 靜態類成員402
A.10 異步處理403
A.10.1 回調地獄404
A.10.2 promise 404
A.10.3 同時執行多個promise 407
A.10.4 async-await 408
A.11 模塊410
A.12 轉換器413
作者介紹
Yakov Fain是Farata Systems和SuranceBay兩家IT公司的聯合創始人。
他有許多個人著書或合著的書,例如Java編程書籍24-Hour Trainer, Angular Development with TypeScript, Java Programming for Kids等。
作為一名Java專家,他講授和主持多個關於Web和Java相關技術的課程和研討會,並在國際會議上發表演講。
Anton Moiseev是SuranceBay的首席軟件工程師。
他使用Java和.NET技術進行企業級應用開發已經有十多年。
他具有堅實的後台開發基礎和對Web相關技術的高度專注,能夠使前端與後端無縫協作。
他講授了很多關於AngularJS和Angular框架的培訓課程。