typescript类型体操我也能跳了

前言

在当今前端圈内,如果你如果还不会 typescript,那么你就不是一名合格的前端工程师。有的人说 typescript 有啥难的,不会的直接使用 any替代,AnyScript 就完事了。

图片

如果你使用了 any,那其实跟使用 JavaScript 写代码并没有什么区别。
那 typescript 相对于 JavaScript 都有哪些区别呢:

typescript javascript
JavaScript 的超集用于解决大型项目的代码复杂性 一种脚本语言,用于创建动态网页。
可以在编译期间发现并纠正错误 作为一种解释型语言,只能在运行时发现错误
强类型,支持静态和动态类型 弱类型,没有静态类型选项
可以在编译期间发现并纠正错误 作为一种解释型语言,只能在运行时发现错误
最终被编译成 JavaScript 代码,使浏览器可以理解 可以直接在浏览器中使用
支持模块、泛型和接口 不支持模块,泛型或接口

通过对比我们可以发现:

  1. 使用 ts 更容易发现代码 bug。 js 是动态语言,要运行的时候才能发现程序错误,而 ts 要编译后才能使用,在编译时如果有类型错误就会被编译器发现。
  2. 代码可预测。 JavaScript 的变量可以赋予任何类型的值。有时候,我们会看到一个变量在执行的过程中变成各种各样的类型,一会是字符串,一会是对象,非常不好预测,尤其是有复杂条件判断的时候。但在 typescript 中,变量一旦确立了类型就不能被改变,这样的变量就具有可预测性
  3. 此外,主流的 IDE 都支持 typescript 代码提示和自动补全

为什么 typescript 能比 JavaScript 强大这么多?主要是因为 typescript 具有完备的类型系统。可以说,学 ts,主要就是学习 ts 的类型系统。

ts 的类型系统主要分为下面3类:

  • 简单的类型系统
  • 泛型的类型系统
  • 类型编程的类型系统(类型体操)

简单的类型和泛型更偏基础,基本每个学过ts的人都接触过,这里就不多介绍了。如果你还不是很了解,可以看下这篇文章: typescript史上最强学习入门文章(2w字)

类型编程(类型体操)

类型编程是针对类型参数,也就是泛型(类型参数)来说的,传入类型参数,经过一系列类型运算逻辑后,返回新的类型就叫做高级类型。这是ts的强大之处,也是复杂之处。类型编程在许多类库中都是必不可少的,因为只有把类型编程写好了,使用者在使用类库的时候才能在IDE中获取到代码提示

如果你对你的类型编程很有兴趣,可以在空余时间刷刷 type-challenges 。如果能把里面的题目都搞懂,那我相信今后任何ts类型体操相关的题目都无法再难住你了。

类型体操做多了之后,你就会发现所有的类型体操基本都可以用下面几个方法来实现:

使用模式匹配提取值

重新构造生成新的类型

循环递归

使用数组长度作为计数

分布式条件运算

参考文献

了不起的 TypeScript 入门教程

typescript史上最强学习入门文章(2w字)


typescript类型体操我也能跳了
http://example.com/2023/03/26/typescript/
作者
John Doe
发布于
2023年3月26日
许可协议