獲取下載鏈接
標籤
踏入代碼新世界,這本書將是你開啟TypeScript之旅的絕佳指南! **第一站:初探TypeScript的魅力(第1-2章)** 我們將一同揭開TypeScript的神秘面紗,瞭解它為何而生,又將如何顛覆你的編碼方式。從搭建開發環境到編寫你的第一個TypeScript程序,你將親身體驗從0到1的成就感。 **第二站:重溫JavaScript的精髓(第3-4章)** 如果你對JavaScript有所耳聞,或者想打下紮實的基礎,這一篇將帶你回顧JavaScript的核心知識,並探索那些讓它充滿活力的前沿特性。 **第三站:玩轉TypeScript的類型魔法(第5-7章)** 這才是本書的“點睛之筆”!我們將深入TypeScript最引以為傲的類型系統。學會馴服類型,你的代碼將變得前所未有的健壯、可維護,告別那些惱人的運行時錯誤。 **第四站:TypeScript的實戰演練(第8-9章)** 紙上得來終覺淺,絕知此事要躬行。本篇將帶你進入TypeScript的實際應用場景,學習如何高效管理項目配置,並將其無縫集成到你的開發工具中,讓你的開發效率更上一層樓。 **溫馨提示:** 如果你已是JavaScript的老司機,完全可以直接跳到第三篇,直奔TypeScript的核心“類型魔法”。但如果你還想鞏固一下基礎,或者打算系統學習JavaScript,我強烈建議你按順序閱讀,並輔以其他資料,一同探索這門魅力無限的語言。 書中所有代碼都以清晰的等寬字體呈現,並貼心地加上了行號。別錯過彩蛋——所有示例代碼都可以在GitHub上找到(傳送門:https://github.com/tstutorial/code),讓你隨時隨地動手實踐,將所學化為己用! 準備好了嗎?讓我們一起出發,解鎖TypeScript的強大力量,編寫更優雅、更可靠的代碼吧!
前言 第一篇 初識TypeScript 第1章 TypeScript簡介 2 1.1 什麼是TypeScript 2 1.1.1 始於JavaScript,終於JavaScript 3 1.1.2 可選的靜態類型 4 1.1.3 開放與跨平臺 4 1.2 為什麼要使用TypeScript 5 1.2.1 易於發現代碼中的錯誤 5 1.2.2 提高生產力 6 1.2.3 支持JavaScript的最新特性 7 1.3 成功案例 8 1.3.1 Visual Studio Code 8 1.3.2 Angular 9 第2章 快速開始 10 2.1 在線編寫並運行TypeScript 10 2.1.1 Hello World! 11 2.1.2 擴展功能:選擇TypeScript版本 12 2.1.3 擴展功能:TypeScript配置項 12 2.2 本地編寫並運行TypeScript 13 2.2.1 選擇代碼編輯器 13 2.2.2 安裝Visual Studio Code 15 2.2.3 安裝TypeScript 15 2.2.4 創建文件 16 2.2.5 編譯程序 17 2.2.6 運行程序 18 2.2.7 可選步驟:設置默認構建任務 18 第二篇 TypeScript語言概覽 第3章 TypeScript語言基礎 22 3.1 變量 22 3.1.1 變量名 23 3.1.2 變量聲明 23 3.2 註釋 24 3.2.1 單行註釋與多行註釋 25 3.2.2 區域註釋 25 3.3 數據類型 26 3.3.1 Undefined 27 3.3.2 Null 27 3.3.3 Boolean 27 3.3.4 String 27 3.3.5 Number 28 3.3.6 Symbol 28 3.3.7 Object 29 3.4 字面量 29 3.4.1 Null字面量 30 3.4.2 Boolean字面量 30 3.4.3 Number字面量 30 3.4.4 字符串字面量 30 3.4.5 模板字面量 30 3.5 對象 31 3.5.1 對象字面量 31 3.5.2 原型對象 32 3.6 數組 34 3.6.1 數組字面量 34 3.6.2 數組中的元素 34 3.7 函數 34 3.7.1 函數聲明 34 3.7.2 函數表達式 35 3.7.3 箭頭函數 36 第4章 TypeScript語言進階 37 4.1 BigInt 37 4.1.1 創建BigInt 38 4.1.2 BigInt與Number 38 4.2 展開運算符 39 4.2.1 展開數組字面量 39 4.2.2 展開對象字面量 39 4.2.3 展開函數參數 39 4.3 解構 40 4.3.1 數組解構 40 4.3.2 對象解構 40 4.4 可選鏈運算符 40 4.4.1 基礎語法 41 4.4.2 短路求值 41 4.5 空值合併運算符 42 第三篇 TypeScript類型系統 第5章 TypeScript類型基礎 44 5.1 類型註解 44 5.2 類型檢查 45 5.2.1 非嚴格類型檢查 45 5.2.2 嚴格類型檢查 45 5.3 原始類型 46 5.3.1 boolean 46 5.3.2 string 47 5.3.3 number 47 5.3.4 bigint 47 5.3.5 symbol與unique symbol 47 5.3.6 Nullable 50 5.3.7 void 53 5.4 枚舉類型 54 5.4.1 數值型枚舉 55 5.4.2 字符串枚舉 56 5.4.3 異構型枚舉 57 5.4.4 枚舉成員映射 58 5.4.5 常量枚舉成員與計算枚舉成員 58 5.4.6 聯合枚舉類型 62 5.4.7 const枚舉類型 65 5.5 字面量類型 66 5.5.1 boolean字面量類型 66 5.5.2 string字面量類型 67 5.5.3 數字字面量類型 67 5.5.4 枚舉成員字面量類型 68 5.6 單元類型 68 5.7 頂端類型 69 5.7.1 any 69 5.7.2 unknown 71 5.7.3 小結 73 5.8 尾端類型 74 5.8.1 never 74 5.8.2 應用場景 75 5.9 數組類型 76 5.9.1 數組類型定義 76 5.9.2 數組元素類型 78 5.9.3 只讀數組 79 5.10 元組類型 80 5.10.1 元組的定義 80 5.10.2 只讀元組 81 5.10.3 訪問元組中的元素 82 5.10.4 元組類型中的可選元素 83 5.10.5 元組類型中的剩餘元素 83 5.10.6 元組的長度 84 5.10.7 元組類型與數組類型的兼容性 85 5.11 對象類型 85 5.11.1 Object 86 5.11.2 object 89 5.11.3 對象類型字面量 91 5.11.4 弱類型 97 5.11.5 多餘屬性 97 5.12 函數類型 102 5.12.1 常規參數類型 102 5.12.2 可選參數類型 102 5.12.3 默認參數類型 104 5.12.4 剩餘參數類型 105 5.12.5 解構參數類型 106 5.12.6 返回值類型 106 5.12.7 函數類型字面量 108 5.12.8 調用簽名 109 5.12.9 構造函數類型字面量 110 5.12.10 構造簽名 111 5.12.11 調用簽名與構造簽名 111 5.12.12 重載函數 112 5.12.13 函數中this值的類型 118 5.13 接口 119 5.13.1 接口聲明 119 5.13.2 屬性簽名 120 5.13.3 調用簽名 120 5.13.4 構造簽名 121 5.13.5 方法簽名 121 5.13.6 索引簽名 122 5.13.7 可選屬性與方法 125 5.13.8 只讀屬性與方法 126 5.13.9 接口的繼承 127 5.14 類型別名 129 5.14.1 類型別名聲明 129 5.14.2 遞歸的類型別名 130 5.14.3 類型別名與接口 132 5.15 類 133 5.15.1 類的定義 134 5.15.2 成員變量 135 5.15.3 成員函數 138 5.15.4 成員存取器 138 5.15.5 索引成員 140 5.15.6 成員可訪問性 140 5.15.7 構造函數 143 5.15.8 參數成員 144 5.15.9 繼承 145 5.15.10 實現接口 150 5.15.11 靜態成員 151 5.15.12 抽象類和抽象成員 153 5.15.13 this類型 155 5.15.14 類類型 156 第6章 TypeScript類型進階 158 6.1 泛型 158 6.1.1 泛型簡介 159 6.1.2 形式類型參數 160 6.1.3 實際類型參數 161 6.1.4 泛型約束 162 6.1.5 泛型函數 165 6.1.6 泛型接口 167 6.1.7 泛型類型別名 168 6.1.8 泛型類 169 6.2 局部類型 170 6.3 聯合類型 171 6.3.1 聯合類型字面量 171 6.3.2 聯合類型的類型成員 173 6.4 交叉類型 176 6.4.1 交叉類型字面量 176 6.4.2 交叉類型的類型成員 178 6.4.3 交叉類型與聯合類型 180 6.5 索引類型 181 6.5.1 索引類型查詢 182 6.5.2 索引訪問類型 185 6.5.3 索引類型的應用 186 6.6 映射對象類型 187 6.6.1 映射對象類型聲明 187 6.6.2 映射對象類型解析 188 6.6.3 映射對象類型應用 188 6.6.4 同態映射對象類型 190 6.7 條件類型 196 6.7.1 條件類型的定義 196 6.7.2 分佈式條件類型 197 6.7.3 infer關鍵字 199 6.8 內置工具類型 201 6.8.1 Partial<T> 201 6.8.2 Required<T> 202 6.8.3 Readonly<T> 202 6.8.4 Record<K, T> 202 6.8.5 Pick<T, K> 202 6.8.6 Omit<T, K> 203 6.8.7 Exclude<T, U> 203 6.8.8 Extract<T, U> 203 6.8.9 NonNullable<T> 203 6.8.10 Parameters<T> 204 6.8.11 ConstructorParameters<T> 204 6.8.12 ReturnType<T> 204 6.8.13 InstanceType<T> 205 6.8.14 ThisParameterType<T> 205 6.8.15 OmitThisParameter<T> 206 6.8.16 ThisType<T> 206 6.9 類型查詢 206 6.10 類型斷言 207 6.10.1 <T>類型斷言 208 6.10.2 as T類型斷言 208 6.10.3 類型斷言的約束 209 6.10.4 const類型斷言 210 6.10.5 !類型斷言 212 6.11 類型細化 213 6.11.1 類型守衛 214 6.11.2 可辨識聯合類型 225 6.11.3 賦值語句分析 232 6.11.4 基於控制流的類型分析 233 6.11.5 斷言函數 233 第7章 TypeScript類型深入 238 7.1 子類型兼容性 238 7.1.1 類型系統可靠性 239 7.1.2 子類型的基本性質 239 7.1.3 頂端類型與尾端類型 240 7.1.4 原始類型 240 7.1.5 函數類型 241 7.1.6 對象類型 245 7.1.7 泛型 249 7.1.8 聯合類型 250 7.1.9 交叉類型 251 7.2 賦值兼容性 251 7.3 類型推斷 253 7.3.1 常規類型推斷 253 7.3.2 按上下文歸類 255 7.4 類型放寬 256 7.4.1 常規類型放寬 256 7.4.2 字面量類型放寬 257 7.5 命名空間 261 7.5.1 命名空間聲明 262 7.5.2 導出命名空間內的聲明 263 7.5.3 別名導入聲明 265 7.5.4 在多文件中使用命名空間 266 7.5.5 小結 269 7.6 模塊 269 7.6.1 模塊簡史 269 7.6.2 ECMAScript模塊 273 7.6.3 模塊導出 273 7.6.4 模塊導入 276 7.6.5 重命名模塊導入和導出 278 7.6.6 針對類型的模塊導入與導出 280 7.6.7 動態模塊導入 284 7.6.8 --module 285 7.7 外部聲明 286 7.7.1 外部類型聲明 287 7.7.2 外部模塊聲明 292 7.8 使用聲明文件 293 7.8.1 語言內置的聲明文件 293 7.8.2 第三方聲明文件 293 7.8.3 自定義聲明文件 298 7.9 模塊解析 299 7.9.1 相對模塊導入 299 7.9.2 非相對模塊導入 300 7.9.3 模塊解析策略 301 7.9.4 模塊解析策略之Classic 301 7.9.5 模塊解析策略之Node 304 7.9.6 --baseUrl 308 7.9.7 paths 310 7.9.8 rootDirs 312 7.9.9 導入外部模塊聲明 312 7.9.10 --traceResolution 313 7.10 聲明合併 314 7.10.1 接口聲明合併 315 7.10.2 枚舉聲明合併 317 7.10.3 類聲明合併 318 7.10.4 命名空間聲明合併 318 7.10.5 擴充模塊聲明 321 7.10.6 擴充全局聲明 322 第四篇 TypeScript應用 第8章 TypeScript配置管理 324 8.1 編譯器 324 8.1.1 安裝編譯器 325 8.1.2 編譯程序 326 8.2 編譯選項 328 8.2.1 編譯選項風格 328 8.2.2 使用編譯選項 330 8.2.3 嚴格類型檢查 331 8.2.4 編譯選項列表 337 8.3 tsconfig.json 338 8.3.1 使用配置文件 338 8.3.2 編譯選項列表 340 8.3.3 編譯文件列表 342 8.3.4 聲明文件列表 346 8.3.5 繼承配置文件 348 8.4 工程引用 351 8.4.1 使用工程引用 352 8.4.2 工程引用示例 353 8.4.3 --build 354 8.4.4 solution模式 356 8.5 JavaScript類型檢查 357 8.5.1 編譯JavaScript 357 8.5.2 JavaScript類型檢查 358 8.5.3 JSDoc與類型 360 8.6 三斜線指令 363 8.6.1 /// <reference path="" /> 364 8.6.2 /// <reference types="" /> 366 8.6.3 /// <reference lib="" /> 367 第9章 TypeScript項目實踐 371 9.1 TypeScript與Babel 371 9.1.1 Babel 372 9.1.2 TypeScript編譯器 372 9.1.3 實例演示 374 9.1.4 注意事項 380 9.1.5 小結 381 9.2 TypeScript與webpack 381 9.2.1 webpack 381 9.2.2 實例演示 381 9.2.3 小結 385 9.3 TypeScript與ESLint 385 9.3.1 ESLint 386 9.3.2 實例演示 386 9.3.3 集成Visual Studio Code 390 9.3.4 小結 393 9.4 TypeScript與Visual Studio Code 393 9.4.1 代碼格式化 394 9.4.2 組織模塊導入語句 395 9.4.3 代碼導航 395 9.4.4 快速修復 396 9.4.5 重構工具 396 9.4.6 CodeLens 397
《C程序設計語言(中文第二版·新版)》
這部作品由C語言的創始者撰寫,定位為面向初學者的入門介紹書。
查看詳情 →《了不起的JavaScript工程師》
《了不起的JavaScript工程師:從前端到全端高級進階》講述了開發者使用JavaScript在各種Web開發場景下所需要掌握的重點知識和概念。從最基礎的開發工具講起,再到開發思維方式和前端頁面開發,然後擴展到小程序開發和開發工具的混合應用,再講解前後端交互最常用的網絡協議及API設計,最後講解了...
查看詳情 →《Python數據結構與算法分析(第2版)》
瞭解數據結構與算法是透徹理解計算機科學的前提。隨著Python日益廣泛的應用,Python程序員需要實現與傳統的面向對象編程語言相似的數據結構與算法。本書是用Python描述數據結構與算法的開山之作,匯聚了作者多年的實戰經驗,向讀者透徹講解在Python環境下,如何通過一系列存儲機制高效地實現各類算...
查看詳情 →《深入淺出 Vue.js》
本書從源碼層面分析了Vue.js。首先,簡要介紹了Vue.js;然後詳細講解了其內部核心技術“變化偵測”,這裡帶領大家從0到1實現一個簡單的“變化偵測”系統;接著詳細介紹了虛擬DOM技術,其中包括虛擬DOM的原理及其patching算法;緊接著詳細討論了模板編譯技術,其中包括模板解析器的實現原理、優...
查看詳情 →