斷斷續續碰了一些 TypeScript 的內容,但在實務上始終缺乏一個概念式的整理,導致沒辦法隨心所欲的規劃使用。這回找上 Hiskio 上的「布魯斯的 TypeScript 入門教學」課程,看能不能有所進步。此篇會筆記下 extends 用來「條件推斷」的用法。
課程相關資訊
[連結]:https://hiskio.com/courses/628/lectures/133559
本篇範圍:Chapter 6
請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。
內容
1. 你可以用 <T extends (屬性) > 來當作泛型的預設值
2. infer 字義上就是推斷:當某個傳入的變數符合某些條件時,就推斷成什麼
1 2 3 4 5 6 7 8 9 10 11 |
function sliceArr<T extends Array<T>>(item: T){ console.log(item.length) // 不會報錯,因為傳入的值預設都有 Array 屬性 } type TT1<T> = T extends Array<infer P> ? P : never type R1 = TT1<['bruce', 1]> // 得到 type 為 'bruce' | 1 type R2 = TT1<true> // 得到 never,因為傳入的值不是 array // Function 用法 type ParamType<T> = T extends (param: infer P) => any ? P : never // T extends (param: infer P) => any 若滿足這個條件,那型別就推斷是 P,不然就是 never |