一、基本认知
1.优点
①TypeScript 更加可靠
它与使用 JavaScript 相比,不仅支持在任何地方直观地获取组件的接口定义,还能对属性、状态中的值是否为空进行自动检测并给出提示(容错处理),甚至还支持对 React JSX元素接收的各种属性、方法的检测和提示。相对于JavaScript 应用而言,TypeScript使得许多低级的 Bug 在开发阶段就能被检测出来并得到快速解决,显著提升了项目的整体质量和稳定性。接手复杂的大型应用时,TypeScript
能让应用易于维护、迭代,且稳定可靠,更有安全感。
在业务应用中引入 TypeScript 后,关于“'undefined' is not a function”``“Cannot read property 'xx' of null|undefined”
之类的低级错误统计信息基本没有。而这正得益于 TypeScript 的静态类型检测,让至少 10% 的 JavaScript错误(主要是一些低级错误)能在开发阶段就被发现并解决。
我们也可以这么理解,在所有操作符之前,TypeScript 都能检测到接收的类型(在代码运行时,操作符接收的是实际数据;静态检测时,操作符接收的则是类型)是否被当前操作符所支持。
当 TypeScript 类型检测能力覆盖到整个文件、整个项目代码后,任意破坏约定的改动都能被自动检测出来(即便跨越多个文件、很多次传递),并提出类型错误。因此,你可以放心地修改、重构业务逻辑,而不用过分担忧因为考虑不周而犯下低级错误。
②提升编码效率
编写 TypeScript 类型注解,本质就是接口设计。TypeScript 极大可能改变你的思维方式,从而逐渐养成一个好习惯。比如,编写具体的逻辑之前,我们需要设计好数据结构、编写类型注解,并按照这接口约定实现业务逻辑。这显然可以减少不必要的代码重构,从而大大提升编码效率。同时,你会更明白接口约定的重要性,也会约束自己/他人设计接口、编写注解、遵守约定,乐此不疲。
2.本质
①TypeScript 与 JavaScript 本质并无区别
你可以将 TypeScipt 理解为是一个添加了类型注解的 JavaScript,比如 const num = 1
,它同时符合 TypeScript 和 JavaScript 的语法。
②TypeScript 是一门中间语言
最终它还需要转译为纯 JavaScript,再交给各种终端解释、执行。不过,TypeScript 并不会破坏 JavaScript 既有的知识体系,因为它并未创造迥异于 JavaScript 的新语法,依旧是“熟悉的配方”“熟悉的味道”。
3.趋势
越来越多的主流框架(例如 React、Vue 3、Angular、Deno、Nest.js 等)要么选用 TypeScript 编写源码,要么为 TypeScript 提供了完美的支持。