EffectiveTypeScript·精進TypeScript代碼的62個實踐方法
《EffectiveTypeScript·精進TypeScript代碼的62個實踐方法》,[美] 丹·范德卡姆 著,[美] 丹·范德卡姆 編,出版社: 中國電力出版社。
讀書,可以與時俱進,開闊自己,提高自己,充實自己,完善自己,是全球文化[1]科技知識擴容和更新的需要,是知識[2]經濟和社會發展的要求。
目錄
目錄
前言 .1
章 了解TypeScript 11
條款1:理解 TypeScript 與 JavaScript 的關係 11
要記住的事情 18
條款2:知道你在使用哪個 TypeScript 選項 18
要記住的事情 22
條款3:理解代碼的生成是獨立於類型的 . 22
類型錯誤的代碼仍會產生輸出 23
你無法在運行時檢查 TypeScript 類型 24
類型操作不能影響運行時的值 26
運行時類型可能與聲明類型不一樣 . 27
你不能基於 TypeScript 類型來重載一個函數 . 28
TypeScript 類型對運行時的能沒有影響 29
要記住的事情 30
條款4:習慣結構類型(Structural Typing). 30
要記住的事情 35
條款5:使用any 類型 35
any 類型沒有類型安全 36
any 類型會讓你打破契約 36
any 類型沒有語言服務 37
any 類型會掩蓋重構代碼時的錯誤 38
any 類型遮蔽了你的類型設計 . 39
any 類型破壞了你對類型系統的信心 40
要記住的事情 40
第2章 TypeScript 的類型系統 41
條款6:使用你的編輯器來詢問和探索類型系統 41
要記住的事情 46
條款7:將類型視為價值的集合 . 46
要記住的事情 53
條款8:知道如何分辨符號是類型空間還是值空間 . 54
要記住的事情 60
條款9:優先選擇類型聲明而不是類型斷言 60
要記住的事情
條款10:避免對象包裝類(String,Number,Boolean,Symbol,BigInt)
要記住的事情 68
條款11:認識額外屬檢查的局限 68
要記住的事情 72
條款12:儘可能將類型應用於整個函數表達式 . 72
要記住的事情 75
條款13:了解類型(type)和接口(interface)的區別 75
要記住的事情 81
條款14:使用類型操作和泛型來避免重複自己的工作 81
要記住的事情 90
條款15:為動態數據使用索引簽名 . 91
要記住的事情 95
條款16:優先選擇 Array、Tuple 和 ArrayLike,而不是數字索引簽名. 95
要記住的事情 99
條款17:使用 readonly 避免值變(Mutation)相關的錯誤. 99
要記住的事情 107
條款18:使用映類型來保持值的同步 . 107
要記住的事情 110
第3章 類型推斷 111
條款19:避免你的代碼被可推斷類型弄得混亂不堪 112
要記住的事情 119
條款20:不同的類型使用不同的變量 119
要記住的事情 122
條款21:理解類型擴展 122
要記住的事情 126
條款22:理解類型收縮 127
要記住的事情 130
條款23:一次構建對象 131
要記住的事情 134
條款24:在使用別名時要保持一致 134
要記住的事情 138
條款25:使用async 函數代替異步代碼的回調 138
要記住的事情 144
條款26:了解類型推斷中如何使用上下文 144
元組類型 . 146
對象 148
回調 148
要記住的事情 149
條款27:使用函數式構造和庫來幫類型流轉 150
要記住的事情 155
第4章 類型設計 156
條款28:傾向選擇總是代表有效狀態的類型 156
要記住的事情 162
條款29:寬進嚴出 163
要記住的事情 166
條款30:不要在文檔中重複類型信息 167
要記住的事情 169
條款31:將空值推到你的類型邊界上 169
要記住的事情 173
條款32:優選接口的聯合,而不是聯合的接口 173
要記住的事情 177
條款33:選擇更準確的字符串類型的替代類型 178
要記住的事情 182
條款34:寧願選擇不完整的類型,也不選擇不準確的類型 . 183
要記住的事情 187
條款35:從 API 和規範而不是從數據中生成類型 . 188
要記住的事情 194
條款36:使用你的問題域語言命名類型 . 194
要記住的事情 197
條款37:考慮加「烙印」來實現名義類型 197
要記住的事情 201
第5章 和 Any 一起工作. 202
條款38:為 Any 類型使用窄的範圍 . 202
要記住的事情 205
條款39:比起普通的 any,選擇更準確的 any 變體 . 205
要記住的事情 207
條款40:在類型良好的函數中隱藏不安全的類型斷言 207
要記住的事情 210
條款41:理解 any 演變 210
要記住的事情 214
條款42:對未知類型的值使用 unknown 而不是 any 214
要記住的事情 218
條款43:選擇類型安全的方法而不是猴子補丁 218
要記住的事情 221
條款44:追蹤你的類型覆蓋率以防止類型安全中的回歸問題 221
要記住的事情 224
第6章 類型聲明和 @types 225
條款45:把 TypeScript 和 @types 放在 devDependencies 中 225
要記住的事情 227
條款46:了解類型聲明中涉及的三個版本 228
要記住的事情 232
條款47:導出所有出現在公有 API 中的類型 232
要記住的事情 233
條款48:使用 TSDoc 來編寫 API 注釋 234
要記住的事情 237
條款49:提供回調中 this 的類型 237
要記住的事情 242
條款50:優先選擇條件類型,而不是重載聲明 242
要記住的事情 245
條款51:反映類型以切斷依賴 . 245
要記住的事情 246
條款52:警惕測試類型時的陷阱 247
要記住的事情 252
第7章 編寫和運行你的代碼 . 253
條款53:使用 ECMAScript 特,而非 TypeScript 特 253
枚舉 254
參數屬 256
命名空間和三斜線導入 258
裝飾器 258
要記住的事情 259
條款54:了解如何迭代對象 259
要記住的事情 262
條款55:了解 DOM 的層次結構 . 262
要記住的事情 269
條款56:不要依賴私有訪問修飾符(private) 來隱藏信息 269
要記住的事情 272
條款57:使用 Source Maps 來調試 TypeScript 272
要記住的事情 276
第8 章 遷移到TypeScript . 277
條款58:編寫現代 JavaScript 278
使用 ECMAScript 模塊 279
使用類而不是原型 . 279
使用 let/const 代替 var . 281
使用 for-of 或數組方法代替 for(;;) 282
優先選擇箭頭函數而不是函數表達式 282
使用對象字面量的簡寫形式和解構賦值 . 283
使用默認函數參數 . 285
使用 async/await 代替原始的 Promise 或 Callback 286
不要把 use strict 放在 TypeScript 中 . 287
要記住的事情 288
條款59:使用 @ts-check 和 JSDoc 來嘗試 TypeScript 288
未聲明的全局變量 . 289
未知的庫 . 289
DOM 問題 290
不準確的 JSDoc 291
要記住的事情 293
條款60:通過 allowJs 混合使用 TypeScript、JavaScript 293
要記住的事情 295
條款61:將模塊逐個轉換到依賴關係圖上 295
未聲明的類成員 296
類型不斷變化的值 . 298
要記住的事情 300
條款62:在啟用 noImplicitAny 之前,不要認為遷移已經完成 . 301
要記住的事情 302