《TypeScript圖形渲染實(shí)戰(zhàn):2D架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)》 —2.4.4 TypeScript中的類型別名
2.4.4? TypeScript中的類型別名
XMLHttpRequestResponseType這個類型用來指示返回的請求資源的類型。下面來看一下該類型是如何定義的。
可以在VS Code中,將鼠標(biāo)指針定位到doGet方法的參數(shù)類型XMLHttpRequest ResponseType上,然后按住Ctrl鍵不放,單擊鼠標(biāo)左鍵,就可以定位到XMLHttpRequest ResponseType的代碼聲明處,如圖2.6所示。
圖2.6? XMLHttpRequestResponseType的定義
XMLHttpRequestResponseType的取值中,"arraybuffer"和"blob"返回二進(jìn)制文件,可以使用TypeScript / JavaScript中的ArrayBuffer和Blob類進(jìn)行二進(jìn)制讀寫。關(guān)于ArrayBuffer和Blob的相關(guān)知識點(diǎn),請大家參考JavaScript官方文檔。
XMLHttpRequestResponseType實(shí)際上是一個類型別名。在TypeScript中可以使用type關(guān)鍵字來聲明類型別名,類型別名的實(shí)際類型不變,它們僅僅是個替代的名字而已。例如XMLHttpRequesetResponseType的類型還是string,其取值范圍使用了“|”符號,表示聯(lián)合類型,在第1章中已經(jīng)了解過了。
type關(guān)鍵字和C/C++中的typedef作用是一樣的,在C/C++中經(jīng)常對模板實(shí)例化類型進(jìn)行typedef重定義(取別名),目的是減少輸入,讓代碼更清晰且容易理解。在TypeScript中也一樣,例如可以使用type關(guān)鍵字重定義IEnumerator < IDoom3Token >迭代器,代碼如下:
type TokenEnumerator = IEnumerator < IDoom3Token > ;
再假設(shè),有一個泛型樹數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)可以掛接例如number類型的節(jié)點(diǎn),現(xiàn)在我們想使用迭代器來迭代樹節(jié)點(diǎn),來對比一下如下代碼:
// 不使用type關(guān)鍵字來聲明類型別名
let nodeEnumerator : IEnumerator < TreeNode < number > > ;
// 使用type關(guān)鍵字來聲明類型別名
type NodeEnumerator = IEnumerator < TreeNode < number > > ; // 一次定義,后續(xù)多次使用別名
let nodeEnumator : NodeEnumerator ;
可以看到,代碼更加清晰、容易理解了,如果讀者看過C++ 標(biāo)準(zhǔn)模板庫的代碼,就會知道沒有類型別名將是多么痛苦的事情了。
架構(gòu)設(shè)計(jì) 渲染 TypeScript
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。