[Day20] TS:用型别建立型别:当个 TypeScript 的型别魔术师

写到第 20 天,关於如何建立 Utility Type 所需的知识也差不多吿一个段落,今天就来做个简单的小结。

建立 Utilty Types 时

在前几天的范例中,读者会发现到要写 Utility Types 比较简单的方式会是针对一个实际的型别去达到你想完成的功能,接着再把可以替换成变数的内容抽换出来。因此如果要建立自己的 Utility Types 可以有两个简单的步骤:

  • 先透过实际的范例把功能写成来
  • 把可以变成参数的地方抽出来

理解 Utility Types 时

如果是要试着理解别人写的 Utility Types 的话,同样有几个重点:

  • 建立适当的断句,帮助理解
  • 不确定时就带入实际的型别试试看
  • 不知道为什麽要这样时,就拿掉试试看会发生什麽事

一开始看别人写的 Utility Types 时很容易陷在茫茫的 <>=?: 这些符号当中,适时的建立断句对於帮助理解就变得很重要。在建立好了断句後,可以试着用一些实际的型别带进去参数当中,看看会得到什麽结果,或者在改变 Conditional Type ?: 後回传的结果,改成比较简单的一些回传值,帮助自己判断。

之所以会想写这个主题

过去我在打开型别定义的原始码时,常常觉得像是在看天书一样,完全不知道要这麽下手,但实际上在有了这些知识之後,这些东西并没有想到这麽难(不是不难,而是至少能够逐渐理解),因此希望透过这 20 天的主题,能够让读者不再害怕原始码:

  • 不要求一开始就能写出复杂的 Utility Types
  • 碰到需求的时候可以自己试着练习写写看 Type Definition
  • 碰到问题的时候能够试着打开原始码了解可能的问题所在

最後,对这个主题能够开始有所涉略,很重要的是 OneDegree 同事们给我的启发,在建立型别的过程中很容易打结,这时候有能一起讨论的同事,会是很重要的一盏明灯,因此特别感谢他们。

但铁人赛还有 10 天,明天要写什麽呢?明天再来想想看吧!


<<:  第三十天:为 TeamCity 设计的 Kotlin DSL

>>:  Day 20:会议

目标、策略与风险

目的(Purpose) “目的”是完成或创建某件事或存在某事的原因。(谷歌字典) 使命与愿景 一个...

[Day16] 注册工具Postman – 安装、介绍Postman

今天终於要进入测试API的阶段啦~~~ 不过在进入测试阶段之前,还是要来介绍一下我们的工具要怎麽使用...

App生命周期使用时机 Day 30

生命周期分为最重要的五个阶段: viewDidLoad: 画面已经(Did)载入记忆体会使用 载入只...

[Tableau Public] day 15:下一个分析主题_appstore资料集

比赛日子过一半了,再坚持一下,就快完赛了! 前面14天我们从 0 到 实作 用了 tableau p...

Day21:[排序演算法]Heap Sort - 堆积排序法

heap sort的原理是采用max heap这种资料结构来做排序,max heap是一种bina...