在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
近年来,TypeScript(TS)越来越频繁的出现在人们的视野内,在各大新闻,论坛上都能看到其身影,当今主流的三大前端框架react,Vue3.0和Angular2中的后两者都使用了TS进行编写,鼓励和支持大家使用TS进行开发。
那么,TS到底有什么魅力,让众多开发者如此青睐。
TypeScript是Microsoft(微软)开发的一种开源编程语言,是JavaScript(JS)的超集,可以编译成JS代码。使用JS编写的合法代码,可以在TS中直接运行。
相比JS,TS引入了静态检查,面向对象等特性供开发者使用,增强了代码的可读性和可维护性,下面简略的介绍下新特性将给我们带来的惊喜。
01 静态类型检查
了解JS的开发者都知道,JS是一门弱类型的语言。弱类型语言在使用时,变量的数据类型是不固定的。这会造成变量的类型会因为我们无意间的操作导致与预期不符合。
举个例子,比如我们定义了一个变量variable为’1’(string类型),在经过代码的一系列处理后,variable或许就变成了1(number类型),这在JS中算是比较常见的。
这样就导致了开发者需要时刻清楚,自己定义的变量在代码运行到什么时刻,会是什么数据类型,否则将会产生代码错误的风险。
继续用上面variable变量这个场景举例,一开始我们定义的变量为string类型,也许我们在之后想使用这个变量调用string的方法,但是在代码运行时variable变量的数据类型改变了,这就可能因为报错而导致程序流程无法正确进行。
而在TS中,引入了静态类型检查的特性,使TS变成“强”类型的语言(由于TS为JS的超集,JS中存在的一些隐式类型转换并没有被舍去,再加上TS中新增了any数据类型,即表示该数据类型可以是动态改变的,因此TS并不算真正意义上的强类型语言)。
当我们在定义变量时,可以对变量指定一个数据类型,当该变量的类型改变时(any除外),在代码编译时即会给出报错提示。
any 类型可以绕过检测
静态类型检查有利于我们构建大型应用。有时因为代码量过大,不能周全的进行测试,此时静态类型检测可以检测到那些没有被执行到的代码,找出其中由于类型修改而暴露出的代码问题,减少应用漏洞。
除此之外,静态类型检测也是一种数据类型上的提示和规范,可以提高开发团队中后期阅读和维护代码的效率。
02 面向对象特性
在JS中,可以说一切皆为对象,当我们用面向对象的思想进行封装代码时,不论是用构造函数,对象,还是es6新增的class时,其实本质上都是在使用JS的Object对象,这就要求在进行一些比较复杂的对象封装时,需比较熟悉对象的原型链等原理,才能封装出简洁,易读,易扩展的对象。
面向对象的三大特征为继承、封装、多态。JS虽然可以模拟实现继承和封装,但无法良好的模拟实现多态。
TS新增了类、接口、泛形等等这些特性。相比“灵活自由”的JS式封装,运用这些特性将会使初学者写的代码更加规范,更易于阅读和扩展,降低了一些封装的门槛,同时也方便了一些熟悉面向对象编程的开发者进行开发。
而对于大型的项目开发,这种面向对象的开发方式能有助于团队合作,提高开发人员的工作效率。
下面列举一个简单的分别运用es5,es6和ts来封装类的对比例子。
03 其他方面
以上两点为TS和JS最大的不同和优势,接下来说下其他一些小优点。
(1)良好的编码体验
TS增强了编辑器和IDE的功能,包括代码补全、接口提示、跳转到定义、重构等等。
(2)活跃的社区
目前已有越来越多的第三方库支持和提供TS声明文件;Google 开发的 Angular2 和国人尤雨溪带领开发的Vue3.0就是使用 TypeScript 编写的。
(3)包容的环境
TypeScript 是 JavaScript 的超集,.js 文件可以直接重命名为 .ts 即可;即使不显式的定义类型,也能够自动做出类型推论;可以定义从简单到复杂的几乎一切类型;即使 TypeScript 编译报错,也可以生成 JavaScript 文件。
虽然TS新增了面向对象的特性,但对一些不熟悉面向对象的开发者而言,需要增加一定的学习成本。
而对于短期的小项目而言,会增加一些开发的成本,不过对于中大型的,需要长期维护的项目来说,使用TS进行开发肯定是利大于弊的。
对于一些库来说,也许目前来说结合使用会有一定困难,不过随着时间推进和社区的努力,该问题会得到解决。
因此,是否立刻学习并使用还需要根据开发者个人的工作环境来决定,不过按照目前的趋势发展,TS的使用率越来越高,如果你拥有时间和能力,个人还是非常推荐开始学习TypeScript的。 - 完 - 想了解更多关于人工智能的资讯 欢迎关注普适极客
|
请发表评论