標籤
踏入代碼新世界,這本書將是你開啟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
《TypeScript入門與實戰》怎麼樣?值得讀嗎?
《TypeScript入門與實戰》哪個版本好?推薦哪個出版社?
如何免費下載《TypeScript入門與實戰》電子版?
《TypeScript入門與實戰》作者版本有什麼特色?
《TypeScript入門與實戰》EPUB和MOBI格式有什麼區別?
《TypeScript入門與實戰》PDF格式是否帶有目錄?
如何在安卓手機上閱讀《TypeScript入門與實戰》EPUB格式?
如何將《TypeScript入門與實戰》傳輸到Kindle上閱讀?
《TypeScript入門與實戰》 EPUB格式支持夜間模式嗎?
《TypeScript入門與實戰》電子書是完整版嗎?
《TypeScript入門與實戰》電子版與紙質版有什麼區別?
閱讀這本書推薦哪種格式?
《人間詞話》
《人間詞話》是在接受了西方美學影響後所創作的文學評論集,被視為晚清以來最具影響力的著作之一。作者以自己的文藝觀對情與景的關係進行了系統分析,在中國文學批評史上首次提出了“造境”與“寫境”、以及“理想”與“寫實”等議題。該書在沿襲傳統的詞話體例、概念與邏輯的基礎上,巧妙地融入了新的觀念,使所涉及的理論問題具有重要意義。除原有內容外,書中還收錄了尚未發表的稿件、王國維的其他文學作品以及精美的水墨畫,為...
查看詳情 →《帶一本書去巴黎》
這位作者林達以往因多部聚焦“近距離觀察美國”的作品而知名,如今她攜帶一部關於“革命”的文學經典《九三年》走向巴黎。她在法蘭西的城堡、廣場、宮殿、教堂與博物館間徜徉,咀嚼文化的豐饒、品嚐藝術的盛宴,聆聽歷史的回聲,感悟前人在血與火中凝聚出的思想與智慧——在濃郁的法國曆史文化氛圍中,她以大量的史實細節與場景,豐富了對藝術、文化、歷史、社會以及“革命”的理解。 寫美國題材的林達又開啟了一段浪漫之都的旅...
查看詳情 →《福爾摩斯探案精選》
英國作家柯南·道爾爵士(1859—1930)筆下的福爾摩斯,早已超越了創作者所在的年代與國界,甚至超越作者本人,成為一個無往不勝、永恆不老的神探形象,亦成了一個廣為人知的通用名詞。本書以道爾爵士在生時親自挑選的被視為“最佳”的若干篇故事為基礎,另外再精選多篇各具特色的偵探佳作,共21篇,彙編成《福爾摩斯探案精選》。並配以精美的原版插圖,一冊在手即可盡覽福爾摩斯探案的精華,值得珍藏與鑑賞。
查看詳情 →《成功心理學》
這部作品以批判性思維為核心,聚焦於時間與金錢管理、溝通與人際關係等基本能力的提升,幫助讀者打破“成功學”的空泛說法,藉助系統化、科學性的心理學工具,尋找屬於自己的成功路徑。 ※編輯推薦※ 當你已經擁有一份前景可觀的工作,卻心懷其他夢想;當職業遇到瓶頸、渴望突破卻對未知的變動心存顧慮;在自我危機與選擇交匯的路口,你應走向何方?哪條路線才是真正通往成功的正確之道?《成功心理學》引導你用批判性思考來審...
查看詳情 →