Effective TypeScript : 精進(jìn)TypeScript代碼的83個(gè)實(shí)踐方法(第二版)
侯璐璐, 馬建勛, 婁麒麟 譯
出版時(shí)間:2025年12月
頁(yè)數(shù):483
“這本書探討了在使用 TypeScript 時(shí)最常見的問題,并提供了實(shí)用且以結(jié)果為導(dǎo)向的建議。無論你是TypeScript的新手,還是有經(jīng)驗(yàn)的開發(fā)者,這本書都能為你帶來新的收獲?!?br />
——Ryan Cavanaugh
微軟TypeScript工程主管
TypeScript作為JavaScript的類型化超集,以其獨(dú)特稟賦化解了JavaScript諸多為人詬病的痼疾。然而,其學(xué)習(xí)門檻頗為陡峭,唯有經(jīng)年累月的實(shí)踐方能洞悉個(gè)中奧妙。本書承襲《Effective C++》與《Effective Java》的經(jīng)典范式,以務(wù)實(shí)風(fēng)格呈現(xiàn)了83條精要準(zhǔn)則,于進(jìn)退取舍間勾勒出駕馭這門語(yǔ)言的智慧圖譜。
本書作者通過詳盡的實(shí)例演示,讓每一條建議都蘊(yùn)含著實(shí)戰(zhàn)的氣息。無論你是初窺門徑的新手,還是已有根基的中階開發(fā)人員,本書都將引領(lǐng)你突破TypeScript的認(rèn)知邊界,蛻變?yōu)樯钪O其道的語(yǔ)言大師。
新版內(nèi)容特別針對(duì)TypeScript 5進(jìn)行了重構(gòu),增補(bǔ)了類型級(jí)編程和TypeScript指南兩大篇章。
● 解析TypeScript類型系統(tǒng)的運(yùn)作機(jī)理,領(lǐng)會(huì)核心精髓。
● 善用類型推斷,以最簡(jiǎn)注解構(gòu)筑周全的類型防護(hù)壁壘。
● 精研類型設(shè)計(jì)之道,鑄就安全性與可讀性兼具的代碼基底。
● 活用泛型與類型級(jí)編程,建模復(fù)雜接口模型。
● 解析依賴關(guān)系與聲明文件,駕馭模塊化工程的隱秘脈絡(luò)。
● 制定JavaScript向TypeScript的漸進(jìn)遷移方略,實(shí)現(xiàn)工程的平穩(wěn)演進(jìn)。
- 前言
- 第一版前言
- 第1章 認(rèn)識(shí)TypeScript
- 條款1:TypeScript與JavaScript
- 條款2:了解常用的編譯選項(xiàng)
- 條款3:代碼生成獨(dú)立于類型
- 條款4:結(jié)構(gòu)類型的自由度
- 條款5:使用any要慎重
- 第2章 TypeScript的類型系統(tǒng)
- 條款6:借助編輯器探索類型世界
- 條款7:值的集合即類型
- 條款8:類型空間與值空間
- 條款9:類型注解勝于類型斷言
- 條款10:避免使用對(duì)象類型(String、Number、Boolean、Symbol、BigInt)
- 條款11:多余屬性檢查和類型檢查
- 條款12:函數(shù)整體聲明類型更安全
- 條款13:type別名與interface
- 條款14:使用readonly守護(hù)不可變值
- 條款15:類型操作配泛型,避免重復(fù)造輪子
- 條款16:類型要精準(zhǔn),索引簽名請(qǐng)慎用
- 條款17:慎用數(shù)字索引簽名
- 第3章 類型推斷與控制流分析
- 條款18:避免類型冗余,保持代碼整潔
- 條款19:類型專屬,變量分立
- 條款20:類型能溯源,推斷全了解
- 條款21:對(duì)象整裝,一次性構(gòu)造
- 條款22:認(rèn)識(shí)類型收窄
- 條款23:別名要使用,類型得一致
- 條款24:以上下文為基礎(chǔ),類型推導(dǎo)有根有據(jù)
- 條款25:類型演變,時(shí)刻了解
- 條款26:函數(shù)式構(gòu)建引航,類型貫通流轉(zhuǎn)
- 條款27:async取代回調(diào),類型流轉(zhuǎn)更暢通
- 條款28:類與柯里化并舉,新建類型推斷點(diǎn)
- 第4章 類型設(shè)計(jì)
- 條款29:類型即契約,狀態(tài)需有效
- 條款30:寬進(jìn)嚴(yán)出,契約必守
- 條款31:類型勿繁,注釋需簡(jiǎn)
- 條款32:類型別名切勿包含null或undefined
- 條款33:空值需在類型之外
- 條款34:接口組合勝過屬性組合
- 條款35:類型精確優(yōu)先,慎用字符串
- 條款36:特殊值要有獨(dú)立類型
- 條款37:慎用可選屬性
- 條款38:同類型參數(shù)不傳兩次
- 條款39:統(tǒng)一類型勝過細(xì)微差異建模
- 條款40:不完全精確的類型勝過不準(zhǔn)確的類型
- 條款41:以專業(yè)領(lǐng)域語(yǔ)言來命名類型
- 條款42:孤例不證
- 第5章 非健全性與any類型
- 條款43:壓縮any的作用域
- 條款44:更精確的any變體勝過any本身
- 條款45:在簽名正確的函數(shù)內(nèi)部隱藏不安全類型斷言
- 條款46:類型未知,unknown勝過any
- 條款47:類型安全的方法勝過猴子補(bǔ)丁
- 條款48:規(guī)避健全性陷阱
- 條款49:跟蹤類型覆蓋率,避免類型安全回退
- 第6章 泛型與類型級(jí)編程
- 條款50:視泛型為類型間的函數(shù)
- 條款51:避免非必要的類型參數(shù)
- 條款52:條件類型勝過重載簽名
- 條款53:控制條件類型在聯(lián)合類型上的分布
- 條款54:使用模板字面量類型建模DSL和字符串之間的關(guān)系
- 條款55:類型也要測(cè)試
- 條款56:優(yōu)化類型的展示方式
- 條款57:泛型也要尾遞歸
- 條款58:自動(dòng)代碼生成勝過手寫復(fù)雜類型
- 第7章 TypeScript指南
- 條款59:使用Never類型進(jìn)行類型窮舉檢查
- 條款60:遍歷對(duì)
- 條款61:使用Record類型保持值的同步
- 條款62:使用剩余參數(shù)和元組類型來建??勺儏?shù)函數(shù)
- 條款63:使用可選的never屬性來建模異或關(guān)系
- 條款64:使用Brand構(gòu)建名義類型
- 第8章 類型聲明和@types
- 條款65:將TypeScript和@types放在devDependencies中
- 條款66:理解類型聲明中的三個(gè)版本
- 條款67:導(dǎo)出所有出現(xiàn)在公共API中的類型
- 條款68:使用TSDoc注釋API
- 條款69:如果this是API的一部分,請(qǐng)?jiān)诨卣{(diào)中為其指定類型
- 條款70:使用鏡像類型斷開依賴關(guān)系
- 條款71:使用模塊增強(qiáng)來改善類型
- 第9章 編寫和運(yùn)行代碼
- 條款72:與Typescript相比,ECMAScript更勝一籌
- 條款73:使用源碼映射調(diào)試TypeScript
- 條款74:了解運(yùn)行時(shí)類型的重組
- 條款75:理解DOM的層級(jí)關(guān)系
- 條款76:根據(jù)環(huán)境創(chuàng)建精確的模型
- 條款77:理解類型檢查和單元測(cè)試之間的關(guān)系
- 條款78:關(guān)注編譯器的性能
- 第10章 現(xiàn)代化與遷移
- 條款79:編寫現(xiàn)代化的JavaScript
- 條款80:使用@ts-check和JSDoc試驗(yàn)TypeScript
- 條款81:使用allowJs混合TypeScript和JavaScript
- 條款82:按照依賴逐個(gè)進(jìn)行模塊轉(zhuǎn)換
- 條款83:在啟用noImplicitAny前,不要認(rèn)為遷移已完成
- 附錄 第一版與第二版條款對(duì)照表
書名:Effective TypeScript : 精進(jìn)TypeScript代碼的83個(gè)實(shí)踐方法(第二版)
譯者:侯璐璐, 馬建勛, 婁麒麟 譯
國(guó)內(nèi)出版社:中國(guó)電力出版社
出版時(shí)間:2025年12月
頁(yè)數(shù):483
書號(hào):978-7-5239-0493-0
原版書書名:Effective TypeScript, 2nd Edition
原版書出版商:O'Reilly Media
Dan Vanderkam
Dan Vanderkam是Sidewalk Labs的首席軟件工程師,也是TypeScript NYC Meetup的聯(lián)合創(chuàng)始人。作為開源項(xiàng)目的長(zhǎng)期貢獻(xiàn)者,他此前曾在西納山的伊坎醫(yī)學(xué)院工作,并在谷歌負(fù)責(zé)數(shù)十億用戶使用的搜索功能。
本書封面上的動(dòng)物是一只紅嘴牛椋鳥(學(xué)名:Buphagus erythrorhynchus)。這種鳥類棲息于非洲東部的零散地區(qū),從東北部的埃塞俄比亞和索馬里,一直到南非的少數(shù)區(qū)域。然而,更準(zhǔn)確地說,它們的棲息地是那些它們幾乎終生依附的食草動(dòng)物的活動(dòng)范圍。
紅嘴牛椋鳥與椋鳥和八哥有親緣關(guān)系,但屬于一個(gè)獨(dú)立的科。體長(zhǎng)約8英寸(約20厘米),體重約2盎司(約57克),頭部、背部和尾部為樹皮褐色,腹部顏色較淺。最顯著的外貌特征是鮮紅的喙和紅色的眼睛,眼睛外圈還環(huán)繞著一圈明亮的黃色眼圈。
這類鳥的一生主要圍繞著食物的獲取方式展開:紅嘴牛椋鳥以蜱蟲和其他動(dòng)物體外寄生蟲為食,通常棲息在宿主動(dòng)物身上覓食。它們最常見的宿主是羚羊類(如捻角羚和黑斑羚),以及體形較大的動(dòng)物,如斑馬、長(zhǎng)頸鹿、水牛和犀牛(大象則不容許它們靠近)。為了更高效地覓食,紅嘴牛椋鳥進(jìn)化出了多種適應(yīng)性特征,例如扁平的喙便于穿透厚實(shí)的動(dòng)物毛發(fā),還有銳利的爪子和堅(jiān)硬的尾羽,可以幫助它們牢牢抓住宿主動(dòng)物。這些鳥甚至在宿主身上完成求偶行為,只有在繁殖季節(jié)才會(huì)離開。它們通常在靠近動(dòng)物群的樹洞中筑巢育雛,每對(duì)親鳥會(huì)養(yǎng)育三只幼鳥,巢中常常墊有它們從宿主身上拔下的毛發(fā),便于在育雛期間繼續(xù)靠近宿主覓食。
紅嘴牛椋鳥與宿主動(dòng)物的關(guān)系曾一度被視為互利共生(即兩個(gè)物種之間互相受益的關(guān)系)的經(jīng)典范例。然而,近年來的研究表明,這些鳥的取食行為對(duì)宿主動(dòng)物體表寄生蟲數(shù)量的實(shí)際影響并不顯著;此外,它們還會(huì)刻意保持動(dòng)物傷口的開放狀態(tài),以便繼續(xù)吸食血液。這也為這一種群間關(guān)系的性質(zhì)帶來了更多爭(zhēng)議。
紅嘴牛椋鳥在其分布區(qū)域內(nèi)依然較為常見。盡管農(nóng)藥的使用對(duì)其構(gòu)成威脅,但它們已適應(yīng)以家養(yǎng)牛群為新的食源,這一轉(zhuǎn)變有助于其種群數(shù)量維持穩(wěn)定。