3dwoo大學簡體電腦書店
編程與類型系統
( 簡體 字)
作者:弗拉德·里斯庫迪亞(Vlad Riscutia)類別:1. -> 程式設計 -> 網路編程 -> Javascript
出版社:機械工業出版社編程與類型系統 3dWoo書號: 54042
詢問書籍請說出此書號!
有庫存
NT售價: 595
出版日:1/1/2021
頁數:316
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787111670513 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
致謝
關于本書
類型及可能的取值
常用算法
第1章 類型簡介1
1.1 為什么存在類型2
1.1.1 0和12
1.1.2 類型和類型系統的定義3
1.2 類型系統的優點4
1.2.1 正確性5
1.2.2 不可變性6
1.2.3 封裝8
1.2.4 可組合性9
1.2.5 可讀性11
1.3 類型系統的類型12
1.3.1 動態類型和靜態類型12
1.3.2 弱類型與強類型13
1.3.3 類型推斷15
小結15
第2章 基本類型17
2.1 設計不返回值的函數17
2.1.1 空類型18
2.1.2 單元類型20
2.1.3 習題21
2.2 布爾邏輯和短路21
2.2.1 布爾表達式22
2.2.2 短路計算22
2.2.3 習題24
2.3 數值類型的常見陷阱24
2.3.1 整數類型和溢出25
2.3.2 浮點類型和圓整28
2.3.3 任意大數30
2.3.4 習題31
2.4 編碼文本31
2.4.1 拆分文本31
2.4.2 編碼32
2.4.3 編碼庫34
2.4.4 習題36
2.5 使用數組和引用構建數據結構36
2.5.1 固定大小數組36
2.5.2 引用37
2.5.3 高效列表38
2.5.4 二叉樹40
2.5.5 關聯數組43
2.5.6 實現時的權衡44
2.5.7 習題44
小結44
習題答案45
第3章 組合46
3.1 復合類型47
3.1.1 元組47
3.1.2 賦予意義49
3.1.3 維護不變量50
3.1.4 習題53
3.2 使用類型表達多選一53
3.2.1 枚舉53
3.2.2 可選類型55
3.2.3 結果或錯誤57
3.2.4 變體62
3.2.5 習題65
3.3 訪問者模式65
3.3.1 簡單實現66
3.3.2 使用訪問者模式67
3.3.3 訪問變體69
3.3.4 習題71
3.4 代數數據類型71
3.4.1 乘積類型71
3.4.2 和類型72
3.4.3 習題72
小結73
習題答案74
第4章 類型安全75
4.1 避免基本類型偏執來防止錯誤解釋76
4.1.1 火星氣候探測者號77
4.1.2 基本類型偏執反模式79
4.1.3 習題79
4.2 實施約束80
4.2.1 使用構造函數實施約束80
4.2.2 使用工廠實施約束81
4.2.3 習題82
4.3 添加類型信息82
4.3.1 類型轉換82
4.3.2 在類型系統之外跟蹤類型83
4.3.3 常見類型轉換86
4.3.4 習題89
4.4 隱藏和恢復類型信息89
4.4.1 異構集合90
4.4.2 序列化92
4.4.3 習題95
小結96
習題答案96
第5章 函數類型98
5.1 一個簡單的策略模式99
5.1.1 函數式策略100
5.1.2 函數的類型101
5.1.3 策略實現102
5.1.4 一等函數102
5.1.5 習題103
5.2 不使用switch語句的狀態機103
5.2.1 類型編程小試牛刀104
5.2.2 狀態機106
5.2.3 回顧狀態機實現111
5.2.4 習題112
5.3 使用延遲值避免高開銷的計算112
5.3.1 lambda113
5.3.2 習題115
5.4 使用map、filter和reduce115
5.4.1 map()115
5.4.2 filter()117
5.4.3 reduce()119
5.4.4 庫支持122
5.4.5 習題123
5.5 函數式編程123
小結123
習題答案124
第6章 函數類型的高級應用126
6.1 一個簡單的裝飾器模式126
6.1.1 函數裝飾器128
6.1.2 裝飾器實現130
6.1.3 閉包130
6.1.4 習題131
6.2 實現一個計數器131
6.2.1 一個面向對象的計數器132
6.2.2 函數式計數器133
6.2.3 一個可恢復的計數器134
6.2.4 回顧計數器實現135
6.2.5 習題135
6.3 異步執行運行時間長的操作135
6.3.1 同步執行136
6.3.2 異步執行:回調136
6.3.3 異步執行模型137
6.3.4 回顧異步函數141
6.3.5 習題141
6.4 簡化異步代碼142
6.4.1 鏈接promise143
6.4.2 創建promise144
6.4.3 關于promise的更多信息146
6.4.4 async/await150
6.4.5 回顧整潔的異步代碼152
6.4.6 習題152
小結153
習題答案153
第7章 子類型155
7.1 在TypeScript中區分相似的類型156
7.1.1 結構和名義子類型的優缺點158
7.1.2 在TypeScript中模擬名義子類型159
7.1.3 習題160
7.2 子類型的極端情況160
7.2.1 安全的反序列化160
7.2.2 錯誤情況的值164
7.2.3 回顧頂層和底層類型167
7.2.4 習題168
7.3 允許的替換168
7.3.1 子類型與和類型169
7.3.2 子類型和集合171
7.3.3 子類型和函數的返回類型172
7.3.4 子類型和函數實參類型174
7.3.5 回顧可變性178
7.3.6 習題178
小結179
習題答案179
第8章 面向對象編程的元素181
8.1 使用接口定義契約182
8.2 繼承數據和行為185
8.2.1 “是一個”經驗準則185
8.2.2 建模層次186
8.2.3 參數化表達式的行為187
8.2.4 習題188
8.3 組合數據和行為189
8.3.1 “有一個”經驗準則189
8.3.2 復合類190
8.3.3 實現適配器模式192
8.3.4 習題194
8.4 擴展數據和行為194
8.4.1 使用組合擴展行為195
8.4.2 使用混入擴展行為197
8.4.3 TypeScript中的混入198
8.4.4 習題199
8.5 純粹面向對象代碼的替代方案199
8.5.1 和類型200
8.5.2 函數式編程202
8.5.3 泛型編程203
小結204
習題答案204
第9章 泛型數據結構206
9.1 解耦關注點207
9.1.1 可重用的恒等函數208
9.1.2 可選類型210
9.1.3 泛型類型211
9.1.4 習題211
9.2 泛型數據布局212
9.2.1 泛型數據結構212
9.2.2 什么是數據結構213
9.2.3 習題214
9.3 遍歷數據結構214
9.3.1 使用迭代器216
9.3.2 流線化迭代代碼220
9.3.3 回顧迭代器225
9.3.4 習題226
9.4 數據流226
9.4.1 處理管道227
9.4.2 習題228
小結228
習題答案229
第10章 泛型算法和迭代器232
10.1 更好的map()、filter()和reduce()233
10.1.1 map()233
10.1.2 filter()234
10.1.3 reduce()234
10.1.4 filter()/reduce()管道235
10.1.5 習題236
10.2 常用算法236
10.2.1 使用算法代替循環237
10.2.2 實現流暢管道237
10.2.3 習題241
10.3 約束類型參數241
10.3.1 具有類型約束的泛型數據結構242
10.3.2 具有類型約束的泛型算法243
10.3.3 習題245
10.4 高效reverse和其他使用迭代器的算法245
10.4.1 迭代器的基礎模塊247
10.4.2 有用的find()251
10.4.3 高效的reverse()254
10.4.4 高效地獲取元素257
10.4.5 回顧迭代器259
10.4.6 習題260
10.5 自適應算法260
小結262
習題答案263
第11章 高階類型及其他266
11.1 更加通用的map267
11.1.1 處理結果或傳播錯誤270
11.1.2 混搭函數的應用272
11.1.3 函子和高階類型273
11.1.4 函數的函子276
11.1.5 習題277
11.2 單子277
11.2.1 結果或錯誤277
11.2.2 map()與bind()的區別282
11.2.3 單子模式284
11.2.4 continuation單子285
11.2.5 列表單子286
11.2.6 其他單子288
11.2.7 習題288
11.3 繼續學習289
11.3.1 函數式編程289
11.3.2 泛型編程289
11.3.3 高階類型和范疇論289
11.3.4 從屬類型290
11.3.5 線性類型290
小結290
習題答案291
附錄A TypeScript的安裝及本書的源代碼293
附錄B TypeScript速覽表295
本書全面介紹類型系統的特性,從基本類型開始,一直介紹到函數類型和子類型、OOP、泛型編程和高階類型(如函子和單子)。本書沒有關注這些特性背后的理論,而是通過實際應用的方式來解釋每種特性。本書說明了如何以及何時使用每種特性來改進代碼。
pagetop