肝了一个月,刷了5遍 TS类型体操,输出了这份 TS 类型体操通关手册,应该是全网最详细的 TS 类型体操解题指南了。
关于类型体操
简单说说我为什么会做类型体操吧。
相信有很多开发同学和我一样,对 ts 又爱又恨,看文档,会了,上手写,就 any。
用 npm 包时,希望它的 ts 定义写的越详细越好。
自己写业务组件时,能省则省。
但是有些 npm 包吧, ts 类型定义的太详细了,我,真真看不懂。
比如我之前研究的 zustand,代码去除类型声明估计 50 - 60 行吧。带上 类型声明,好家伙,直接奔着三四百行去了。而且其中的一些用法,肚子里没两碗水,真的端不平。
其实我一直是不太喜欢写 ts 的,能不写,就不写。即便写,也是边查边写,太麻烦了就 any,那个时候,看到什么类型体操,内心都会嗤之以鼻,炫技有什么好的,代码是用来干活的,把业务写好了,工资奖金才有着落,整花活没用。
但是工作中,对别人封装的组件的类型声明又非常严格,比如同事封装的组件,看到 any 了就得说一句,把这个类型完善一下。对 npm 包的要求就更不用说了,你连这点类型提示都没有,这包多半就不好使啊。
但是的但是,万事都有轮回,总归有一天,要自己发包,要自己提供业务组件,那么这个时候,稍微麻烦点的地方都用 any 可是会被狠狠吐槽的,而且不仅仅是 any, 但凡有些地方类型声明不全,都是会被吐槽。
我为了给自己的 状态管理库 写一份完善的类型声明,深入研究了 ts,并把 TS类型体操做了四、五遍,熬出来了这份 TS 类型挑战通关手册,包含了所有题目的题解。
说实话,TS 炫技不重要,重要的是这些基操,不做题就永远停留在表面。
做类型体操就像上学的时候,做的题多了,理解深不深不知道,至少会写了,也能看得懂了。
关于这份手册
接下来再简单说说这份 TS 类型挑战通关手册 吧。
主要的初衷是,我刷了两遍 TS体操,但是刷的过程中,很多知识点都是朦朦胧胧似懂非懂,有些点也是能做出来就行,不去深入研究,有些题好像在之前做过类似的,但是找起来好困难啊。
所以在刷第三遍,第四遍的时候,我萌生了写一份题解的想法。
一方面,记录下题解,看起来方便,顺便把懵懂的点钻研清楚。
另一方面,梳理清楚不同题目之间的通用解法,把一些通用的技巧整理出来,也算是给自己一个总结。
最终,产出了 TS 类型挑战通关手册 。
刷题姿势的话,建议按照题目顺序阅读题解,从简单到复杂逐步深入。不建议直接去看通用技巧章节,只需要在刷题过程遇到的时候查看即可。
在阅读题解时,强烈建议先尝试自己解答题目,然后再对照题解进行学习和思考。
建议通过 vscode 插件 Type Challenges 进行解答。
最终再翻看或者在没有思路的时候翻看本文档整理的题解,看看思路上有无出入,当然,思路往往不止一种,本文档也仅仅只代表我的理解,不一定最优,有更好的想法,或者文中有说的不对的地方,可以随时联系我。
再调侃下 TS & TS 类型体操:
做类型体操前,这什么玩意。做之后,妈妈再也不用担心我看不懂类型声明了。
我看过官方文档,翻过很多问答,但是依然想不出来如何给我的变量声明一个完善的类型。
最后,希望本手册能够在通关之路中帮到大家。