当前位置: 首页 > news >正文

JavaScript vs TypeScript哪家强?


译者 | 明明如月,责编 | 郭芮

转载 | CSDN 公众号

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 不支持接口。

2

为什么要用 TypeScript ?

  • TS 在开发时就能给出编译错误, 而 JS 错误则需要在运行时才能暴露。

  • 作为强类型语言,你可以明确知道数据的类型。代码可读性极强,几乎每个人都能理解。

  • TS 非常流行,被很多业界大佬使用。像 Asana、Circle CI 和 Slack 这些公司都在用 TS。

3

为什么不该用 TypeScript ?

  • TS 需要编译。TS 得通过编译才能变成 JS 代码。

  • 随着时间的推移,类型可能变得非常复杂。当项目不断变大时这种情况十分常见。

  • 尽管 TS 是类型安全的,在有些情况下编译器也有检查不出任何错误的情况。当我们修改编译后的 JS 代码时,错误就不可检测了。不过随着编译器不断改进,这种情况会越来越少。

4

摘要


JavaScriptTypeScript
语言脚本语言面向对象编程语言
学习难度灵活易学需要有脚本编程经验
类型轻量级解释编程语言强类型的面向对象编程语言
客户端/服务端客户端服务端都有侧重客户端
拓展名.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。

本文到此结束,希望你能有所收获,轻松快乐的学习。

原文:https://medium.com/javascript-in-plain-english/is-typescript-the-way-forward-659caa2cb10f

RECOMMEND

推荐阅读

01

JS入门,首选畅销二十年经典著作:犀牛书

《JavaScript权威指南(第6版)》

“本书是JavaScript程序员的必备参考……内容组织得很好,而且非常详细。”

--JavaScript之父Brendan Eich

推荐理由:从1996年以来,“犀牛书”已经成为JavaScript程序员心中公认的权威指南。本书凭借着完整的内容、细致的讲解以及海量针对性的示例而受到读者的一致好评,二十多年来印刷超过1000000册,畅销不衰。是JavaScript和前端开发领域不可多得的佳作。

这本厚达1010页的巨著主要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScriptAPI。对于那些希望学习Web编程语言的有经验的程序员和希望精通JavaScript的JS程序员,本书最适合不过了。本书不仅适合初学者系统学习,而且适合有经验的JavaScript开发者随手翻阅:初学者读完本书,将会对JS有全面的认识,快速掌握JS最核心的技术。而有经验的开发者读完本书,会让你对JS的理解有从量变到质变的深层次飞跃。

点击链接了解详情并购买

02

在游戏式开发中轻松掌握JS技术:老鹰书

《JavaScript编程精解(原书第3版)》

 编程原理与运用规则的简练、完美融合。我喜欢游戏式的程序开发教程。本书再次点燃了我学习编程的热情。对了,是JavaScript!

——Brendan Eich,JavaScript之父

 

“这是一本好书,适合那些没有JavaScript经验,甚至没有编程经验的人阅读。”

——Nicholas Zakas,世界知名Web技术专家,撰写多部JS畅销书籍。

推荐理由:这本书由世界知名JS工程师撰写,JS之父BrendanEich及世界知名专家强力推荐,提纲挈领地介绍了JS语言的主要功能和特色,读者可以通过学习这些内容循序渐进地掌握基本的编程概念、技术和思想。为了读者能够较快地上手实际的项目,这本书还安排了5个实战章节,涉及路径查找、自制编程语言、平台交互游戏、绘图工具和动态网站等方面,这些章节教会你如何利用掌握的知识实现各种功能,并组成一个完整的项目。

《JavaScript编程精解》第3版包含了JavaScript语言ES6 规范的最新功能,比如绑定、常量、类、promise等。通过学习本书,你能了解该语言的最新发展,并编写出更强大的代码。相对于犀牛书是绝佳的的补充学习读本。

点击链接了解详情并购买 

03

使用TypeScript 3.0和不同的JavaScript框架来开发高质量的应用程序

《TypeScript项目开发实战》

点击购买

推荐理由:本书是一本TypeScript进阶实践指南,通过9个实用项目,详细讲解如何使用TypeScript 3.0和不同的JavaScript框架开发高质量的应用程序。书中不仅介绍TypeScript的核心概念与技术,还涵盖Angular和React的一些新功能,以及GraphQL、微服务和机器学习等相关的新技术。学习完本书后,你将能够自信地使用TypeScript 3.0和不同的JavaScript框架来开发高质量的应用程序。

更多精彩回顾

书讯 |华章计算机拍了拍你,并送来了8月书单(下)

书讯 | 华章计算机拍了拍你,并送来了8月书单(上)

上新 | 三个男人一台戏,为云原生应用和OpenShift写了一本书
书单 | 《天才引导的历程》| 西安交通大学送给准大一新生的礼物

干货 | 机器人干活,我坐一边喝茶——聊聊最近爆火的RPA

收藏 | 揭秘阿里巴巴的客群画像

相关文章:

  • 首本深入讲解Linux内核观测技术BPF的书上市!
  • AI不止能美颜,美妆迁移这样做
  • 【第17期】云原生应用:任何企业都是软件公司
  • 如何从0到1搭建大数据平台
  • 策略产品经理实践:主观评估的方法论
  • 一条SQL引发的“血案”:与SQL优化相关的4个案例
  • AI移动端算法优化之盒子滤波
  • 研究股票?我们偷偷告诉你一个算法
  • 用Spark进行实时流计算的那些技巧
  • 数字人民币要来了!试点全面展开,一文看懂央行数字货币背后逻辑
  • 模型独立学习:多任务学习与迁移学习
  • 看完这篇还不了解 Nginx,那我就哭了!
  • 流量红利已经耗尽?这几本书带你玩转电商各路技巧
  • 乘风破浪的迁移学习!四字成语讲明白这个大热研究方向
  • 详解阿里巴巴1688日常业务中的榜单算法
  • CSS盒模型深入
  • java2019面试题北京
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Js基础知识(一) - 变量
  • k8s如何管理Pod
  • maya建模与骨骼动画快速实现人工鱼
  • python_bomb----数据类型总结
  • Python进阶细节
  • SpringBoot几种定时任务的实现方式
  • Travix是如何部署应用程序到Kubernetes上的
  • tweak 支持第三方库
  • Vim 折腾记
  • Vue.js 移动端适配之 vw 解决方案
  • 百度小程序遇到的问题
  • 利用jquery编写加法运算验证码
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 小程序开发中的那些坑
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • $.ajax()
  • (1)Nginx简介和安装教程
  • (4.10~4.16)
  • (C语言)共用体union的用法举例
  • (二)hibernate配置管理
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (力扣)1314.矩阵区域和
  • (七)理解angular中的module和injector,即依赖注入
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (全注解开发)学习Spring-MVC的第三天
  • (万字长文)Spring的核心知识尽揽其中
  • (转)大型网站架构演变和知识体系
  • ***详解账号泄露:全球约1亿用户已泄露
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .chm格式文件如何阅读
  • .NET CLR Hosting 简介
  • .NET 材料检测系统崩溃分析
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .NET运行机制
  • .Net转前端开发-启航篇,如何定制博客园主题