開啟主選單

求真百科

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

參考文獻

  1. 文化的作用是什麼,光明網,2015-10-14
  2. 什麼是知識?,搜狐,2016-08-13