JavaScript 败北,TypeScript 大势所趋?
前端大学
共 1963字,需浏览 4分钟
· 2020-01-08
(给前端大学加星标,提升前端技能.)
来自: CSDN 译者:明明如月 责编:郭芮
https://medium.com/javascript-in-plain-english/is-typescript-the-way-forward-659caa2cb10f
由于TypeScript的先天优势,TypeScript越来越受欢迎。那问题来了:TypeScript 和 JavaScript 究竟哪个更好?JavaScript真的会败北吗?
以下为译文:
你以前可能曾听说过“TypeScript”这个词。到现在 2019年,TypeScript 在 GitHub 最常用编程语言排行榜排名第 7 位,在增速最快的编程语言排行榜中占第 5 位。TypeScript (TS) 是微软开发的一种开源编程语言,可以编译成 JavaScript (JS) 代码。自 2012 年发布以来,这门语言一直保持活跃发展并且越发受欢迎。在早期,开发社区就将 TypeScript 和 Angular 紧密联系在一起。尽管用 JS 也不是不行,但是 Angular 强迫你使用 TypeScript。1. TypeScript 和 JavaScript 的区别是什么?Typescript 是 JavaScript 的超集,可以被编译成 JavaScript 代码。 用 JavaScript 编写的合法代码,在 TypeScript 中依然有效。 Typescript 是纯面向对象的编程语言,包含类和接口的概念。 程序员可以用它来编写面向对象的服务端或客户端程序,并将它们编译成 JavaScript 代码。TypeScript和 JavaScript的关系,图源:GeeksforGeeks
TypeScript 引入了很多面向对象程序设计的特征,包括:
- interfaces 接口
- classes 类
- enumerated types 枚举类型
- generics 泛型
- modules 模块
- TS 是一种面向对象编程语言,而 JS 是一种脚本语言(尽管 JS 是基于对象的)。
- TS 支持可选参数, JS 则不支持该特性。
- TS 支持静态类型,JS 不支持。
- TS 支持接口,JS 不支持接口。
- TS 在开发时就能给出编译错误, 而 JS 错误则需要在运行时才能暴露。
- 作为强类型语言,你可以明确知道数据的类型。代码可读性极强,几乎每个人都能理解。
- TS 非常流行,被很多业界大佬使用。像 Asana、Circle CI 和 Slack 这些公司都在用 TS。
- TS 需要编译。TS 得通过编译才能变成 JS 代码。
- 随着时间的推移,类型可能变得非常复杂。当项目不断变大时这种情况十分常见。
- 尽管 TS 是类型安全的,在有些情况下编译器也有检查不出任何错误的情况。当我们修改编译后的 JS 代码时,错误就不可检测了。不过随着编译器不断改进,这种情况会越来越少。
4. 摘要
JavaScript | TypeScript | |
---|---|---|
语言 | 脚本语言 | 面向对象编程语言 |
学习难度 | 灵活易学 | 需要有脚本编程经验 |
类型 | 轻量级解释编程语言 | 强类型的面向对象编程语言 |
客户端/服务端 | 客户端服务端都有 | 侧重客户端 |
拓展名 | .js | .ts 或 .tsx |
耗时 | 更快 | 编译代码需要些时间 |
数据绑定 | 没有类型和接口的概念 | 使用类型和接口表示数据 |
注解 | 不需要注解 | 使用注解才能最大限度发挥 TypeScript的特性 |
语法 | 所有的语句都写在脚本标签内。浏览器将脚本标签内的文本识别为脚本 | 一个 TypeScript 程序由模块、方法、变量、语句、表达式和注释构成。 |
静态类型 | JS 中没有静态类型的概念 | 支持静态类型 |
模块支持 | 不支持模块 | 支持模块 |
接口 | 没有接口 | 支持接口 |
可选参数方法 | 不支持 | 支持 |
原型 | 没有这种特性 | 支持原型特性 |
开发者社区 | JS 使用范围很广,被编程社区广泛接受和使用 | TS 比较新,编程社区相对较小 |
参考选择 | 小型项目 | TS 是一种面向对象语言,代码更简洁,可读性和复用性强。因此 TS 更适合大型项目。 |
表格来自:Edureka
5. 结论那问题来了:TypeScript 和 JavaScript 哪个更好?由于 TS 的先天优势,TS 越来越受欢迎。但是请记住,TS 最终不可能取代 JS,因为 JS 是 TS 的核心。选择 TypeScript 还是 JavaScript 要由开发者自己去做决定。如果你喜欢类型安全的语言,那么推荐你选择 TS。 如果你已经用 JS 好久了,你可以选择走出舒适区学习 TS,也可以选择坚持自己的强项,继续使用 JS。本文到此结束,希望你能有所收获,轻松快乐的学习。
分享前端好文,缺个 在看
评论
一篇文章带你了解JavaScript作用域
点击上方“前端进阶学习交流”,进行关注回复“前端”即可获赠前端相关学习资料今日鸡汤杨家有女初长成,养在深闺人未识。在JavaScript中,对象和函数也是变量。在JavaScript中,作用域是你可以访问的变量、对象和函数的集合。JavaScript 有函数作用域: 这个作用域在函数内变化。一、本地
前端进阶学习交流
0
一篇文章带你了解JavaScript switch
点击上方“前端进阶学习交流”,进行关注回复“前端”即可获赠前端相关学习资料今日鸡汤舍身而取义者也!Switch是与if ... else ...相同的条件语句,不同之处在于switch语句允许根据值列表测试变量是否相等。switch 语句用于根据不同的条件执行不同的操作。一、Switch 语句使用s
前端进阶学习交流
0
如何使用 JavaScript 阻止屏幕进入睡眠状态
前言在移动设备上,屏幕常亮是一个常见的需求,尤其是在使用 Web 应用时。为了满足这一需求,开发者可以使用JavaScript中的 Wake Lock API 来阻止屏幕进入睡眠状态。本文将详细介绍如何使用这一 API,并讨论其在不同浏览器上的兼容性情况。检查Wake Lock功能的支持情况在使用W
高级前端进阶
655
JavaScript高级系列(十五) - ES6~ES13-ES7~ES12知识点
这个章节中我们讲解ES7~ES12中重要的核心语法。一. ES7知识点 1.1. Array Includes在ES7之前,如果我们想判断一个数组中是否包含某个元素,需要通过 indexOf 获取结果,并且判断是否为 -1。在ES7中,我们可以通过includes来判断一个数组中是否包含一个指定的元
前端迷
10
一篇文章带你了解JavaScript Window History
点击上方“ 前端进阶学习交流 ”,进行关注 回复“ 前端 ”即可获赠前端相关学习资料 今 日 鸡 汤 孤帆远影碧空尽,唯见长江天际流。 一、前言 window.history 对象可以不用窗口window前缀编写。为了保护用户的隐私,有限...
前端进阶学习交流
0
《现代JavaScript库开发》:一年回顾与展望
从2013年至今,我陆续创作了多个库,关于如何开发JavaScript库,我也做了一些总结和分享,借这个机会,下面做个简要回顾。 2015年,我发布了zepto.fullpage,一款轻量级的全屏滚动插件。 2016年,我发布了前端模板te...
前端迷
0
JavaScript中的7个逆天console方法,你绝对想不到
在 JavaScript 中,console 不仅仅只有 log error 和 warn 方法。 实际上console有20多个这样的方法。 它们的功能不仅仅是记录文本,它还包括彩色数据可视化、调试、性能测试等等。 让我们看看另外7个强大的方法 1....
前端劝退师
0
巧妙使用 Decorator 装饰 Typescript?
前言 原创文章汇总:github/Nealyang 正在着手写 THE LAST TIME 系列的 Typescript 篇,而Decorator 一直是我个人看来一个非常不错的切面方案。所谓的切面方案就是我们常说的切面编程 AOP。一种编程思想,简单直白的...
入坑互联网
0