你是否曾經:html
- 看了各類TS文檔,寫起來仍是似懂非懂;
- 接觸了一些TS關鍵字,用起來不太熟練,缺少明確的理論參考;
- TS寫着寫着降級到了JS;
- 類型在不知道什麼地方就斷了層,再也接不上了;
基於咱們踩坑TS的過程,總結了這篇文檔。經過邊學邊練,從問題到解答到知識點,帶你體驗類型體操的快樂,並把類型體操應用在平常開發中。前端
序號 | 標題 | 難度指數 | 關鍵詞 | 題目摘要 |
---|---|---|---|---|
1. | Extract | 🌟 | generics 、union 、extends |
從某聯合類型中選出「和其餘類型相交」一部分 |
2. | Lookup | 🌟🌟 | generics 、union 、extends |
從某聯合類型中選出「知足特定條件的」一部分 |
3. | Chainable Option | 🌟🌟 | generics 、recursive |
使用遞歸使類型知足鏈式調用 |
4. | SubType | 🌟🌟 | keyof |
給對象作merge操做 |
5. | Change Argument | 🌟🌟🌟 | infer 、ReturnType 、Parameters |
操做函數的參數和返回值的類型 |
6. | Underscore | 🌟🌟🌟 | Template Literal Types 、recursive |
下劃線字符串轉駝峯式 |
7. | EventEmitter | 🌟🌟🌟🌟 | generics 、function overload 、Intersection |
經過泛型解決函數參數間的相互依賴 |
8. | Permutation | 🌟🌟🌟🌟 | union 、extends 、never |
全排列問題 |
9. | Simple Vue | 🌟🌟🌟🌟🌟 | this |
模擬一個Vue的this操做 |
10. | Union To Tuple | 🌟🌟🌟🌟🌟 | function overload 、Intersection |
無序聯合類型轉有序tuple |
- [Conditional Types - Checking extends never](https://github.com/microsoft/TypeScript/issues/23182);
- <https://github.com/type-challenges/type-challenges/issues/614>
複製代碼
- [TypeScript 類型技巧 - 多參數類型約束](https://zhuanlan.zhihu.com/p/95828198);
- [Typescript Tips: 動態重載實現廉價版dependent type](https://zhuanlan.zhihu.com/p/95829351)
複製代碼
- [TypeScript union function types](https://stackoverflow.com/questions/58629426/typescript-union-function-types)
複製代碼
歡迎關注「 字節前端 ByteFE 」git
簡歷投遞聯繫郵箱「tech@bytedance.com」github