近年来,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相关推荐

  1. 【网络爬虫教学】一分钟带你快速寻找JS加密入口(二)

    Hi,大家好,欢迎大家参阅由IT猫之家精心制作的JS实战系列教学课程,我是作者叮当猫,在上期教学中,我们学习了如何快速分析基于Header授权加密协议,同时我们也初次接触到了钩子(hook)的概念,钩 ...

  2. java md5加密解密_技术09期:数据安全之加密与实现

    前言:大数据时代,每个人的生活中都不存在所谓的绝对"秘密",通过网络上的数据信息可以分析出一个人生活的各种痕迹.因此,保障大数据信息安全至关重要. 本文主要介绍了散列算法.对称加密 ...

  3. 移动端视频开发通过什么方式实现直播?十分钟带你快速了解

    原文链接:https://www.jianshu.com/p/92b71382724f 本专栏专注分享大型Bat面试知识,后续会持续更新,喜欢的话麻烦点击一个关注 现在的移动端的音视频这些在近段时间非 ...

  4. 虚拟机booting from hard disk_一分钟带您快速了解虚拟机软件

    什么是虚拟机软件?虚拟机软件可以在计算机平台和终端用户之间建立一种环境,而终端用户则是基于这个软件所建立的环境来操作软件.在计算机科学中,虚拟机是指可以像真实机器一样运行程序的计算机的软件实现. 在计 ...

  5. LoRa技术及应用---5分钟带你入门!

    1.什么是 LoRa技术? LoRa全称是Long Range,既远距离的意思,由semtech公司研发并推广的一种低功耗局域网无线标准.目前,LoRa 主要在ISM频段运行,主要包括433.868. ...

  6. 5分钟带你快速了解ServiceMesh的前世今生

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 原始时代 1969年11月,为了便于高校间共享资源,美国国 ...

  7. 3分钟带您快速了解HIL测试及其架构

    什么是HIL测试 硬件在环(HIL)仿真是一种用于测试导航系统的技术,其中测试前并不知道车辆轨迹.在这种情况下,车辆轨迹被实时馈送到GNSS模拟器.HIL可用于复杂实时系统的开发和测试,如卫星控制系统 ...

  8. Java语言与lua的区别_5分钟带你快速了解Lua语言

    一般工作多年的程序员都是了解多种计算机语言的,比如java,c,php等,我列出的是常见的,当然也有的知道python,c#,Objective-C,每个语言都有着自己的特点和亮点,没有说哪种语言最好 ...

  9. sp烘焙流程_3分钟带你快速入门substance painter 贴图制作

    先看下基本效果预览: 我也是萌新菜鸡,不喜勿喷哦~ 下面是具体步骤: 1.导出模型: 在确保UV和光滑组分好的前提下进行高低模导出,为了确保烘焙时候模型之间的穿插不出现错误,我们需要对高低模进行分组, ...

最新文章

  1. 这只狗,其实是猫变的:“撸猫神器”StarGAN v2来了!
  2. java怎么运行class文件,面试必会
  3. 解决 wcf HTTP 无法注册 另一应用程序正在使用 TCP 端口 80
  4. 在图形化界面中为Ubuntu18.04更新源
  5. java浏览文件夹_一个用java实现简单的文件浏览器
  6. jQuery的实现原理
  7. java线程怎么用_Java多线程基本使用
  8. 【转载】 CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)概念区分理解
  9. 路由重发布Route Redistribution
  10. R语言使用strsplit函数按照指定的分隔符号进行数据拆分、分裂(split)、分割后的数据类型为列表
  11. WordPress插件 引流吸粉到微信公众号 提高用户关注量
  12. linux设置的依赖关系,linux:dpkg:依赖关系问题使得 skype 的配置工作不能继续:问题解决方法...
  13. 定义一个复数类Complex,使得代码能够进行下面的工作:
  14. android qq底部菜单栏,怎么关闭手机QQ底部导航栏的“看点”?
  15. 算法入门1:基本概念
  16. 先卸载 nvidia-387.26驱动,再安装nvidia-384.81 驱动
  17. 深度相机原理揭秘之飞行时间法(TOF)
  18. AE 动效工作流技巧 —— 减少 Bodymovin 导出的 JSON 大小并提升性能(四)
  19. 基于javaweb+mysql的教务选课管理系统(管理员、教师、学生)
  20. 择时策略 —— 基于 RSRS 指标的沪深300指数择时

热门文章

  1. 微软张若非:搜索引擎和广告系统,那些你所不知的AI落地技术
  2. 华为推CPU Turbo,荣耀Note10突破3000档
  3. 百度发布智能小程序:“开放+AI”是最大特色
  4. 使用 IDEA 解决 Java8 的数据流问题,用过的都说好!!!
  5. MyBatis-Plus 看这篇就够了
  6. Sentinel实现限流,竟是如此的简单!
  7. 又一款Markdown组合神器!!!
  8. 你还在new对象吗?Java8通用Builder了解一下?
  9. 那些年让你迷惑的阻塞、非阻塞、异步、同步
  10. 2021语言与智能技术竞赛上线!百度飞桨提供平台算力支持