舉報

會員
編程與類型系統
最新章節:
附錄B TypeScript速覽表
本書全面介紹類型系統的特性,從基本類型開始,一直介紹到函數類型和子類型、OOP、泛型編程和高階類型(如函子和單子)。本書沒有關注這些特性背后的理論,而是通過實際應用的方式來解釋每種特性。本書說明了如何以及何時使用每種特性來改進代碼。
最新章節
書友吧品牌:機械工業出版社
譯者:趙利通
上架時間:2021-01-29 11:47:45
出版社:機械工業出版社
本書數字版權由機械工業出版社提供,并由其授權上海閱文信息技術有限公司制作發行
- 附錄B TypeScript速覽表 更新時間:2021-01-29 11:52:35
- 附錄A TypeScript的安裝及本書的源代碼
- 習題答案
- 小結
- 11.3.5 線性類型
- 11.3.4 從屬類型
- 11.3.3 高階類型和范疇論
- 11.3.2 泛型編程
- 11.3.1 函數式編程
- 11.3 繼續學習
- 11.2.7 習題
- 11.2.6 其他單子
- 11.2.5 列表單子
- 11.2.4 continuation單子
- 11.2.3 單子模式
- 11.2.2 map()與bind()的區別
- 11.2.1 結果或錯誤
- 11.2 單子
- 11.1.5 習題
- 11.1.4 函數的函子
- 11.1.3 函子和高階類型
- 11.1.2 混搭函數的應用
- 11.1.1 處理結果或傳播錯誤
- 11.1 更加通用的map
- 本章要點
- 第11章 高階類型及其他
- 習題答案
- 小結
- 10.5 自適應算法
- 10.4.6 習題
- 10.4.5 回顧迭代器
- 10.4.4 高效地獲取元素
- 10.4.3 高效的reverse()
- 10.4.2 有用的find()
- 10.4.1 迭代器的基礎模塊
- 10.4 高效reverse和其他使用迭代器的算法
- 10.3.3 習題
- 10.3.2 具有類型約束的泛型算法
- 10.3.1 具有類型約束的泛型數據結構
- 10.3 約束類型參數
- 10.2.3 習題
- 10.2.2 實現流暢管道
- 10.2.1 使用算法代替循環
- 10.2 常用算法
- 10.1.5 習題
- 10.1.4 filter()/reduce()管道
- 10.1.3 reduce()
- 10.1.2 filter()
- 10.1.1 map()
- 10.1 更好的map()、filter()和reduce()
- 本章要點
- 第10章 泛型算法和迭代器
- 習題答案
- 小結
- 9.4.2 習題
- 9.4.1 處理管道
- 9.4 數據流
- 9.3.4 習題
- 9.3.3 回顧迭代器
- 9.3.2 流線化迭代代碼
- 9.3.1 使用迭代器
- 9.3 遍歷數據結構
- 9.2.3 習題
- 9.2.2 什么是數據結構
- 9.2.1 泛型數據結構
- 9.2 泛型數據布局
- 9.1.4 習題
- 9.1.3 泛型類型
- 9.1.2 可選類型
- 9.1.1 可重用的恒等函數
- 9.1 解耦關注點
- 本章要點
- 第9章 泛型數據結構
- 習題答案
- 小結
- 8.5.3 泛型編程
- 8.5.2 函數式編程
- 8.5.1 和類型
- 8.5 純粹面向對象代碼的替代方案
- 8.4.4 習題
- 8.4.3 TypeScript中的混入
- 8.4.2 使用混入擴展行為
- 8.4.1 使用組合擴展行為
- 8.4 擴展數據和行為
- 8.3.4 習題
- 8.3.3 實現適配器模式
- 8.3.2 復合類
- 8.3.1 “有一個”經驗準則
- 8.3 組合數據和行為
- 8.2.4 習題
- 8.2.3 參數化表達式的行為
- 8.2.2 建模層次
- 8.2.1 “是一個”經驗準則
- 8.2 繼承數據和行為
- 8.1 使用接口定義契約
- 本章要點
- 第8章 面向對象變成的元素
- 習題答案
- 小結
- 7.3.6 習題
- 7.3.5 回顧可變性
- 7.3.4 子類型和函數實參類型
- 7.3.3 子類型和函數的返回類型
- 7.3.2 子類型和集合
- 7.3.1 子類型與和類型
- 7.3 允許的替換
- 7.2.4 習題
- 7.2.3 回顧頂層和底層類型
- 7.2.2 錯誤情況的值
- 7.2.1 安全的反序列化
- 7.2 子類型的極端情況
- 7.1.3 習題
- 7.1.2 在TypeScript中模擬名義子類型
- 7.1.1 結構和名義子類型的優缺點
- 7.1 在TypeScript中區分相似的類型
- 本章要點
- 第7章 子類型
- 習題答案
- 小結
- 6.4.6 習題
- 6.4.5 回顧整潔的異步代碼
- 6.4.4 async/await
- 6.4.3 關于promise的更多信息
- 6.4.2 創建promise
- 6.4.1 鏈接promise
- 6.4 簡化異步代碼
- 6.3.5 習題
- 6.3.4 回顧異步函數
- 6.3.3 異步執行模型
- 6.3.2 異步執行:回調
- 6.3.1 同步執行
- 6.3 異步執行運行時間長的操作
- 6.2.5 習題
- 6.2.4 回顧計數器實現
- 6.2.3 一個可恢復的計數器
- 6.2.2 函數式計數器
- 6.2.1 一個面向對象的計數器
- 6.2 實現一個計數器
- 6.1.4 習題
- 6.1.3 閉包
- 6.1.2 裝飾器實現
- 6.1.1 函數裝飾器
- 6.1 一個簡單的裝飾器模式
- 本章要點
- 第6章 函數類型的高級應用
- 習題答案
- 小結
- 5.5 函數式編程
- 5.4.5 習題
- 5.4.4 庫支持
- 5.4.3 reduce()
- 5.4.2 filter()
- 5.4.1 map()
- 5.4 使用map、filter和reduce
- 5.3.2 習題
- 5.3.1 lambda
- 5.3 使用延遲值避免高開銷的計算
- 5.2.4 習題
- 5.2.3 回顧狀態機實現
- 5.2.2 狀態機
- 5.2.1 類型編程小試牛刀
- 5.2 不使用switch語句的狀態機
- 5.1.5 習題
- 5.1.4 一等函數
- 5.1.3 策略實現
- 5.1.2 函數的類型
- 5.1.1 函數式策略
- 5.1 一個簡單的策略模式
- 本章要點
- 第5章 函數類型
- 習題答案
- 小結
- 4.4.3 習題
- 4.4.2 序列化
- 4.4.1 異構集合
- 4.4 隱藏和恢復類型信息
- 4.3.4 習題
- 4.3.3 常見類型轉換
- 4.3.2 在類型系統之外跟蹤類型
- 4.3.1 類型轉換
- 4.3 添加類型信息
- 4.2.3 習題
- 4.2.2 使用工廠實施約束
- 4.2.1 使用構造函數實施約束
- 4.2 實施約束
- 4.1.3 習題
- 4.1.2 基本類型偏執反模式
- 4.1.1 火星氣候探測者號
- 4.1 避免基本類型偏執來防止錯誤解釋
- 本章要點
- 第4章 類型安全
- 習題答案
- 小結
- 3.4.3 習題
- 3.4.2 和類型
- 3.4.1 乘積類型
- 3.4 代數數據類型
- 3.3.4 習題
- 3.3.3 訪問變體
- 3.3.2 使用訪問者模式
- 3.3.1 簡單實現
- 3.3 訪問者模式
- 3.2.5 習題
- 3.2.4 變體
- 3.2.3 結果或錯誤
- 3.2.2 可選類型
- 3.2.1 枚舉
- 3.2 使用類型表達多選一
- 3.1.4 習題
- 3.1.3 維護不變量
- 3.1.2 賦予意義
- 3.1.1 元組
- 3.1 復合類型
- 本章要點
- 第3章 組合
- 習題答案
- 小結
- 2.5.7 習題
- 2.5.6 實現時的權衡
- 2.5.5 關聯數組
- 2.5.4 二叉樹
- 2.5.3 高效列表
- 2.5.2 引用
- 2.5.1 固定大小數組
- 2.5 使用數組和引用構建數據結構
- 2.4.4 習題
- 2.4.3 編碼庫
- 2.4.2 編碼
- 2.4.1 拆分文本
- 2.4 編碼文本
- 2.3.4 習題
- 2.3.3 任意大數
- 2.3.2 浮點類型和圓整
- 2.3.1 整數類型和溢出
- 2.3 數值類型的常見陷阱
- 2.2.3 習題
- 2.2.2 短路計算
- 2.2.1 布爾表達式
- 2.2 布爾邏輯和短路
- 2.1.3 習題
- 2.1.2 單元類型
- 2.1.1 空類型
- 2.1 設計不返回值的函數
- 本章要點
- 第2章 基本類型
- 小結
- 1.3.3 類型推斷
- 1.3.2 弱類型與強類型
- 1.3.1 動態類型和靜態類型
- 1.3 類型系統的類型
- 1.2.5 可讀性
- 1.2.4 可組合性
- 1.2.3 封裝
- 1.2.2 不可變性
- 1.2.1 正確性
- 1.2 類型系統的優點
- 1.1.2 類型和類型系統的定義
- 1.1.1 0和1
- 1.1 為什么存在類型
- 本章要點
- 第1章 類型簡介
- Common algorithms 常用算法
- Types and possible values 類型及可能的取值
- About this book 關于本書
- Acknowledgements 致謝
- Preface 前言
- 版權頁
- 封面
- 封面
- 版權頁
- Preface 前言
- Acknowledgements 致謝
- About this book 關于本書
- Types and possible values 類型及可能的取值
- Common algorithms 常用算法
- 第1章 類型簡介
- 本章要點
- 1.1 為什么存在類型
- 1.1.1 0和1
- 1.1.2 類型和類型系統的定義
- 1.2 類型系統的優點
- 1.2.1 正確性
- 1.2.2 不可變性
- 1.2.3 封裝
- 1.2.4 可組合性
- 1.2.5 可讀性
- 1.3 類型系統的類型
- 1.3.1 動態類型和靜態類型
- 1.3.2 弱類型與強類型
- 1.3.3 類型推斷
- 小結
- 第2章 基本類型
- 本章要點
- 2.1 設計不返回值的函數
- 2.1.1 空類型
- 2.1.2 單元類型
- 2.1.3 習題
- 2.2 布爾邏輯和短路
- 2.2.1 布爾表達式
- 2.2.2 短路計算
- 2.2.3 習題
- 2.3 數值類型的常見陷阱
- 2.3.1 整數類型和溢出
- 2.3.2 浮點類型和圓整
- 2.3.3 任意大數
- 2.3.4 習題
- 2.4 編碼文本
- 2.4.1 拆分文本
- 2.4.2 編碼
- 2.4.3 編碼庫
- 2.4.4 習題
- 2.5 使用數組和引用構建數據結構
- 2.5.1 固定大小數組
- 2.5.2 引用
- 2.5.3 高效列表
- 2.5.4 二叉樹
- 2.5.5 關聯數組
- 2.5.6 實現時的權衡
- 2.5.7 習題
- 小結
- 習題答案
- 第3章 組合
- 本章要點
- 3.1 復合類型
- 3.1.1 元組
- 3.1.2 賦予意義
- 3.1.3 維護不變量
- 3.1.4 習題
- 3.2 使用類型表達多選一
- 3.2.1 枚舉
- 3.2.2 可選類型
- 3.2.3 結果或錯誤
- 3.2.4 變體
- 3.2.5 習題
- 3.3 訪問者模式
- 3.3.1 簡單實現
- 3.3.2 使用訪問者模式
- 3.3.3 訪問變體
- 3.3.4 習題
- 3.4 代數數據類型
- 3.4.1 乘積類型
- 3.4.2 和類型
- 3.4.3 習題
- 小結
- 習題答案
- 第4章 類型安全
- 本章要點
- 4.1 避免基本類型偏執來防止錯誤解釋
- 4.1.1 火星氣候探測者號
- 4.1.2 基本類型偏執反模式
- 4.1.3 習題
- 4.2 實施約束
- 4.2.1 使用構造函數實施約束
- 4.2.2 使用工廠實施約束
- 4.2.3 習題
- 4.3 添加類型信息
- 4.3.1 類型轉換
- 4.3.2 在類型系統之外跟蹤類型
- 4.3.3 常見類型轉換
- 4.3.4 習題
- 4.4 隱藏和恢復類型信息
- 4.4.1 異構集合
- 4.4.2 序列化
- 4.4.3 習題
- 小結
- 習題答案
- 第5章 函數類型
- 本章要點
- 5.1 一個簡單的策略模式
- 5.1.1 函數式策略
- 5.1.2 函數的類型
- 5.1.3 策略實現
- 5.1.4 一等函數
- 5.1.5 習題
- 5.2 不使用switch語句的狀態機
- 5.2.1 類型編程小試牛刀
- 5.2.2 狀態機
- 5.2.3 回顧狀態機實現
- 5.2.4 習題
- 5.3 使用延遲值避免高開銷的計算
- 5.3.1 lambda
- 5.3.2 習題
- 5.4 使用map、filter和reduce
- 5.4.1 map()
- 5.4.2 filter()
- 5.4.3 reduce()
- 5.4.4 庫支持
- 5.4.5 習題
- 5.5 函數式編程
- 小結
- 習題答案
- 第6章 函數類型的高級應用
- 本章要點
- 6.1 一個簡單的裝飾器模式
- 6.1.1 函數裝飾器
- 6.1.2 裝飾器實現
- 6.1.3 閉包
- 6.1.4 習題
- 6.2 實現一個計數器
- 6.2.1 一個面向對象的計數器
- 6.2.2 函數式計數器
- 6.2.3 一個可恢復的計數器
- 6.2.4 回顧計數器實現
- 6.2.5 習題
- 6.3 異步執行運行時間長的操作
- 6.3.1 同步執行
- 6.3.2 異步執行:回調
- 6.3.3 異步執行模型
- 6.3.4 回顧異步函數
- 6.3.5 習題
- 6.4 簡化異步代碼
- 6.4.1 鏈接promise
- 6.4.2 創建promise
- 6.4.3 關于promise的更多信息
- 6.4.4 async/await
- 6.4.5 回顧整潔的異步代碼
- 6.4.6 習題
- 小結
- 習題答案
- 第7章 子類型
- 本章要點
- 7.1 在TypeScript中區分相似的類型
- 7.1.1 結構和名義子類型的優缺點
- 7.1.2 在TypeScript中模擬名義子類型
- 7.1.3 習題
- 7.2 子類型的極端情況
- 7.2.1 安全的反序列化
- 7.2.2 錯誤情況的值
- 7.2.3 回顧頂層和底層類型
- 7.2.4 習題
- 7.3 允許的替換
- 7.3.1 子類型與和類型
- 7.3.2 子類型和集合
- 7.3.3 子類型和函數的返回類型
- 7.3.4 子類型和函數實參類型
- 7.3.5 回顧可變性
- 7.3.6 習題
- 小結
- 習題答案
- 第8章 面向對象變成的元素
- 本章要點
- 8.1 使用接口定義契約
- 8.2 繼承數據和行為
- 8.2.1 “是一個”經驗準則
- 8.2.2 建模層次
- 8.2.3 參數化表達式的行為
- 8.2.4 習題
- 8.3 組合數據和行為
- 8.3.1 “有一個”經驗準則
- 8.3.2 復合類
- 8.3.3 實現適配器模式
- 8.3.4 習題
- 8.4 擴展數據和行為
- 8.4.1 使用組合擴展行為
- 8.4.2 使用混入擴展行為
- 8.4.3 TypeScript中的混入
- 8.4.4 習題
- 8.5 純粹面向對象代碼的替代方案
- 8.5.1 和類型
- 8.5.2 函數式編程
- 8.5.3 泛型編程
- 小結
- 習題答案
- 第9章 泛型數據結構
- 本章要點
- 9.1 解耦關注點
- 9.1.1 可重用的恒等函數
- 9.1.2 可選類型
- 9.1.3 泛型類型
- 9.1.4 習題
- 9.2 泛型數據布局
- 9.2.1 泛型數據結構
- 9.2.2 什么是數據結構
- 9.2.3 習題
- 9.3 遍歷數據結構
- 9.3.1 使用迭代器
- 9.3.2 流線化迭代代碼
- 9.3.3 回顧迭代器
- 9.3.4 習題
- 9.4 數據流
- 9.4.1 處理管道
- 9.4.2 習題
- 小結
- 習題答案
- 第10章 泛型算法和迭代器
- 本章要點
- 10.1 更好的map()、filter()和reduce()
- 10.1.1 map()
- 10.1.2 filter()
- 10.1.3 reduce()
- 10.1.4 filter()/reduce()管道
- 10.1.5 習題
- 10.2 常用算法
- 10.2.1 使用算法代替循環
- 10.2.2 實現流暢管道
- 10.2.3 習題
- 10.3 約束類型參數
- 10.3.1 具有類型約束的泛型數據結構
- 10.3.2 具有類型約束的泛型算法
- 10.3.3 習題
- 10.4 高效reverse和其他使用迭代器的算法
- 10.4.1 迭代器的基礎模塊
- 10.4.2 有用的find()
- 10.4.3 高效的reverse()
- 10.4.4 高效地獲取元素
- 10.4.5 回顧迭代器
- 10.4.6 習題
- 10.5 自適應算法
- 小結
- 習題答案
- 第11章 高階類型及其他
- 本章要點
- 11.1 更加通用的map
- 11.1.1 處理結果或傳播錯誤
- 11.1.2 混搭函數的應用
- 11.1.3 函子和高階類型
- 11.1.4 函數的函子
- 11.1.5 習題
- 11.2 單子
- 11.2.1 結果或錯誤
- 11.2.2 map()與bind()的區別
- 11.2.3 單子模式
- 11.2.4 continuation單子
- 11.2.5 列表單子
- 11.2.6 其他單子
- 11.2.7 習題
- 11.3 繼續學習
- 11.3.1 函數式編程
- 11.3.2 泛型編程
- 11.3.3 高階類型和范疇論
- 11.3.4 從屬類型
- 11.3.5 線性類型
- 小結
- 習題答案
- 附錄A TypeScript的安裝及本書的源代碼
- 附錄B TypeScript速覽表 更新時間:2021-01-29 11:52:35