技术09期:5分钟带你快速了解TypeScript
近年来,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的。
- 完 -
想了解更多关于人工智能的资讯
欢迎关注普适极客
技术09期:5分钟带你快速了解TypeScript相关推荐
- 【网络爬虫教学】一分钟带你快速寻找JS加密入口(二)
Hi,大家好,欢迎大家参阅由IT猫之家精心制作的JS实战系列教学课程,我是作者叮当猫,在上期教学中,我们学习了如何快速分析基于Header授权加密协议,同时我们也初次接触到了钩子(hook)的概念,钩 ...
- java md5加密解密_技术09期:数据安全之加密与实现
前言:大数据时代,每个人的生活中都不存在所谓的绝对"秘密",通过网络上的数据信息可以分析出一个人生活的各种痕迹.因此,保障大数据信息安全至关重要. 本文主要介绍了散列算法.对称加密 ...
- 移动端视频开发通过什么方式实现直播?十分钟带你快速了解
原文链接:https://www.jianshu.com/p/92b71382724f 本专栏专注分享大型Bat面试知识,后续会持续更新,喜欢的话麻烦点击一个关注 现在的移动端的音视频这些在近段时间非 ...
- 虚拟机booting from hard disk_一分钟带您快速了解虚拟机软件
什么是虚拟机软件?虚拟机软件可以在计算机平台和终端用户之间建立一种环境,而终端用户则是基于这个软件所建立的环境来操作软件.在计算机科学中,虚拟机是指可以像真实机器一样运行程序的计算机的软件实现. 在计 ...
- LoRa技术及应用---5分钟带你入门!
1.什么是 LoRa技术? LoRa全称是Long Range,既远距离的意思,由semtech公司研发并推广的一种低功耗局域网无线标准.目前,LoRa 主要在ISM频段运行,主要包括433.868. ...
- 5分钟带你快速了解ServiceMesh的前世今生
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 原始时代 1969年11月,为了便于高校间共享资源,美国国 ...
- 3分钟带您快速了解HIL测试及其架构
什么是HIL测试 硬件在环(HIL)仿真是一种用于测试导航系统的技术,其中测试前并不知道车辆轨迹.在这种情况下,车辆轨迹被实时馈送到GNSS模拟器.HIL可用于复杂实时系统的开发和测试,如卫星控制系统 ...
- Java语言与lua的区别_5分钟带你快速了解Lua语言
一般工作多年的程序员都是了解多种计算机语言的,比如java,c,php等,我列出的是常见的,当然也有的知道python,c#,Objective-C,每个语言都有着自己的特点和亮点,没有说哪种语言最好 ...
- sp烘焙流程_3分钟带你快速入门substance painter 贴图制作
先看下基本效果预览: 我也是萌新菜鸡,不喜勿喷哦~ 下面是具体步骤: 1.导出模型: 在确保UV和光滑组分好的前提下进行高低模导出,为了确保烘焙时候模型之间的穿插不出现错误,我们需要对高低模进行分组, ...
最新文章
- 这只狗,其实是猫变的:“撸猫神器”StarGAN v2来了!
- java怎么运行class文件,面试必会
- 解决 wcf HTTP 无法注册 另一应用程序正在使用 TCP 端口 80
- 在图形化界面中为Ubuntu18.04更新源
- java浏览文件夹_一个用java实现简单的文件浏览器
- jQuery的实现原理
- java线程怎么用_Java多线程基本使用
- 【转载】 CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)概念区分理解
- 路由重发布Route Redistribution
- R语言使用strsplit函数按照指定的分隔符号进行数据拆分、分裂(split)、分割后的数据类型为列表
- WordPress插件 引流吸粉到微信公众号 提高用户关注量
- linux设置的依赖关系,linux:dpkg:依赖关系问题使得 skype 的配置工作不能继续:问题解决方法...
- 定义一个复数类Complex,使得代码能够进行下面的工作:
- android qq底部菜单栏,怎么关闭手机QQ底部导航栏的“看点”?
- 算法入门1:基本概念
- 先卸载 nvidia-387.26驱动,再安装nvidia-384.81 驱动
- 深度相机原理揭秘之飞行时间法(TOF)
- AE 动效工作流技巧 —— 减少 Bodymovin 导出的 JSON 大小并提升性能(四)
- 基于javaweb+mysql的教务选课管理系统(管理员、教师、学生)
- 择时策略 —— 基于 RSRS 指标的沪深300指数择时