孙小果最大谜团,作为前端,有必要去学习TypeScript吗

感谢邀约孙小果最大谜团,你的这个问题提的很好,10月5日凌晨,对于Vue来说是个重要的日子,尤雨溪公布了 Vue 3 源代码,这次源代码最大的亮点就是 98% 以上使用TypeScript 编写,目前就有一个很现实的问题摆在我们前端开发者的面前,如果你不学习 TypeScript ,Vue 源代码你就看的很吃力。

孙小果最大谜团,作为前端,有必要去学习TypeScript吗

孙小果最大谜团,作为前端,有必要去学习TypeScript吗

孙小果最大谜团,作为前端,有必要去学习TypeScript吗

孙小果最大谜团,作为前端,有必要去学习TypeScript吗

孙小果最大谜团,作为前端,有必要去学习TypeScript吗

因此,关于你的提问,我可以肯定的告诉你,作为前端开发者,我们此时比以往任何时候更需要学习TypeScript,以下是针对这个答案的观点,欢迎大家指正。

孙小果最大谜团,作为前端,有必要去学习TypeScript吗

首先我们来了解下什么是TypeScript

C#语言的创始人 Anders Hejlsberg 设计了 TypeScript,并于2013年6月19日发布了其第一个正式版本,它是JavaScript的一个超集,之所以设计这个语言的初衷就是帮助前端开发人员能像后端开发人员那样利用高级语言的特性进行编写代码。比如可以利用高级语言的这些特点:强类型、面向对象、语法检查,代码编译等。TypeScript 还有一个最大的特点就是可编译 ,编译的好处就是有利于发现错误,一发现错误就终止编译,提前帮我们定位问题,编译通过后,就会将 TypeScript 语言转换成高质量的原生JavaScript 代码。

经过这几年的发展,TypeScript 的最新版本是3.X,目前是微软最有影响力的产品之一,最重要的一点是现在完全免费并且开源。还有一个比较有趣的事情是,连谷歌这样竞争对手,在其 Angular 的前端框架产品上,也放下成见,从2.0 版本就开始拥抱TypeScript,可见谷歌在这件事情多么有先见知名,现在 React 、Vue 才意识到使用TypeScript。从目前的情况来看,如果你不学习TypeScript,Angular 框架你就无法使用,在过不了多久,React 、Vue 也不好说会不会强制要求我们使用TypeScript,反正Angular 最早这么干了,目前还是主流的前端框架之一。

然后我们在来分析下 JavaScript 的现状

这几年 JavaScript 可谓发展迅速,可谓全平台通吃,现流行称作“大前端”,目前前端不仅能做网站、还能做手机端、WebGL 3D 动画、VR、后端、游戏开发、物联网开发、甚至人工智能等等,这些互联网产品的主要形态,几乎都可以用前端来完成。由于其发展太快,JavaScript 这门语言也在紧跟时代的步伐,并且改名ECMAScript,几乎每年都会有新版本发布,目前最新版本应该到10了,就是这样的发展速度,还是与java 和 c# 这些成熟的高级语言还有很大的距离。由于版本的问题,我们在项目中可能混杂着各版本的脚本,造成了规范不统一,兼容性差的各种问题。

接下来,我们来回顾下 JavaScript 的常见的场景,由于其实弱语言的特点,不会进行类型检查,比如 1+“1” 这个问题,有可能是我们人为失误的原因多写了双引号,其结果不会报错,会正常输出一个我们不想见到的结果11,这就造成了我们很难发现问题。除此之外,还有莫名其妙的各种undefined问题,也不会影响程序运行,增加了我排查问题的难度。

因此我们需要一个工具帮我们降低 JavaScript 弱语言的脆弱性,减少由于不正确类型导致错误产生的风险和各种版本混杂造成错误的风险等等。TypeScript 的出现正好解决了我们的这类问题。

接下来具体分析下 TypeScript 的特点和优势

1、入门容易,前端开发者很容易上手

TypeScript 从表面上看来就和普通的 JavaScript 代码差不多,无非就是把高级语言的强类型这个最主要的特征引入JavaScript,就好像为 JavaScript 上了一把高级语言强类型的锁,避免这类问题的产生,由此不得不佩服微软的良苦用心,就是为了让我们前端开发者更好的更快的学习TypeScript。我们先来看段代码,理解下强类型的特征,如下代码所示:

你可能认为这段代码很平常,如果你这样调用 increaseAge(cat),TypeScript 编译器就会报出错误,提示你increaseAge这个函数的参数必须是数字。如果是原生 JavaScript 不但不报错,还会正常的返回结果,这就大大增加了我们开发过程中潜在的风险及排查错误的时间成本。这也许就是TypeScript 的魅力所在,提前帮我们发现代码出现错的风险。

2、按需编译成我们指定的 JavaScript 版本

在上面分析 JavaScript 的现状时,我们提及到 JavaScript 版本几乎每年都会有新的版本,如果你要写出兼容性比较高的脚本,对于我们前端开发者来说是一个很大的挑战,你不能保证每个人都使用let,或者超前使用最新语法特性等。TypeScript 却很好的解决了此问题,你可以按需输出你需要的脚本,比如 ECMAScript 3、ECMAScript 5 、ECMAScript 6 。同时 TypeScript 还与时俱进,紧跟 JavaScript 的新特性,这就意味你可以使用这些新特性进行编写,无需考虑其是否兼容,兼容的事情都交给 JavaScript 编译器吧。

3、代码规范标准,有利于团队协作开发

现在的互联网产品越来越复杂,形态又多,各终终端,一个产品不可能只有一个前端进行开发,现在前端开发也是团队的开发模式,刚才提及到 JavaScript 本身的特点还有其发展太快,这就会造成每个人写代码的随意性就会很大,你当然可以为团队引入 eslint 这些插件进行代码质量检查,但是你要整理出这些规范来估计要花费不少的时间。与其花时间在这上面,还不如在TypeScript 的基础上,结合 TypeScript 的特点做一套标准即可来应对 JavaScript 版本不断更新的特点。

最后给前端初学者的一些建议

如果你是 JavaScript 的新手,我不建议你一上来就学习 TypeScript,等你有了一定的基础,对前端的概念和逻辑有一定的认知后,再学 TypeScript 也不晚,并且学习起来更快 ,这样你就会写出更健壮的 TypeScript。TypeScript 这个工具的设计初衷并不是为了吸引更多的人学习前端,而是为了让具有一定基础的前端开发者编能像其他高级语言开发者一样编写出质量更高的健壮性的代码。

小节今天的内容就分享到这里,不知道我的这些观点是否能说服你去学习 TypeScript 。还有一个原因我漏掉了,我在这里补充下,你会发现目前端岗位的招聘需求里有的公司都明确要求熟练掌握TypeScript啦 ,学习TypeScript本身并不难。它像JavaScript一样编写和运行,只是增加一些新的理念和语法糖,我们学起来也会更加顺手,加油吧,现在开始学习 TypeScript 并不晚。

感谢大家阅读,如果你有什么好的想法欢迎到留言区分享交流,如果你赞同我的回答,欢迎给个赞和转发,谢谢支持。

2022-06-10

2022-06-10