作者丨Saurabh Barot

2018 年发起的 Stack Overflow 开发人员调查揭示了业内关于不同编程语言、平台、库等的一些流行观点。基于这项研究可以看出,TypeScript 是比 JavaScript 更受喜爱的编程语言。开发者喜欢使用 TypeScript 的因素之一是它可以向 JavaScript 添加类型。

这样你就能在运行代码之前发现错误了。此外 TypeScript 编译器还能为你提供建议,帮助你更好地解决这些错误。

开发者将类型添加到 JavaScript 后还可以使用代码编辑器中的一些高级功能,如自动模块导入、代码自动补完和重构整个项目等。

TypeScript 只是一个基于 JavaScript 的层。TypeScript 的学习曲线很陡峭,使用它之前应该先好好学习它的语法,这样上手起来更快。

开发者可以轻松地将 JavaScript 文件转换为 TypeScript,只需将文件扩展名从.js 更改为.ts 即可。之后所有 TypeScript 代码都将编译为 JavaScript。

1、什么是 TypeScript?

实际上 TypeScript 是一种编程语言。它也被称为 JavaScript 的超集。你可以在 TypeScript 中找到 JavaScript 中的所有功能。它可以用作大型 JavaScript 应用程序的编程语言。

好消息是最新版本的 ECMAScript 就能支持 TypeScript 了。编译 TypeScript 时还能同时输出一个 JavaScript 版本,在所有平台上都能正常运行。

2、TypeScript 的受欢迎程度

如果我们看一下 TypeScript 从 2016 年到 2018 年的发展历程,你会发现用过 TypeScript 并愿意再次使用的用户比例从 20.8%增加到了 46.7%。开发人员选择它的主要原因之一是它能减少错误。

TypeScript 如今越来越受欢迎,具体数据表现如下:

3、TypeScript V/s JavaScript

TypeScript 面世已经有几年时间了,相继发布了很多新版本,有了许多改进。这些改进体现在功能、函数、性能等许多方面。使用 TypeScript 取代 JavaScript 的现象也越来越多。要深入了解这一状况,你需要对这些技术有客观的认识。

那么让我们比较一下…

JavaScript

  • 用法。JavaScript 是一种遵循客户端编程原则的脚本语言。它用于开发交互式网页。这意味着它不需要 Web 浏览器提供任何内容,也可以轻松地在用户的 Web 浏览器上运行。
  • 数据绑定。在 JavaScript 中没有使用接口和类型描述数据的概念。
  • 生态系统。不需要任何构建步骤就能用 JS 编码。
  • 学习曲线。JavaScript 简单灵活。
  • 原型。JavaScript 没有原型功能。
  • 代码编译。你不需要在 TypeScript 中编译代码。
  • 类型标注。 JavaScript 不需要类型标注。

TypeScript

  • 用法。TypeScript 是一种基于 JavaScript 的开发语言。用它可以编写简单的 JavaScript 代码,写出来的代码可以在任何支持 ECMAScript 3 或更新版本的浏览器上运行。
  • 数据绑定。TypeScript 使用接口和类型来描述数据。
  • 生态系统。TypeScript 带有直观的生态系统。这样你就可以在项目中加入一些 JavaScript 功能。
  • 学习曲线。TypeScript 有着严格的学习曲线。
  • 原型。TypeScript 具有原型功能。
  • 代码编译。 你需要在 TypeScript 中编译代码。
  • 类型标注。开发人员需要不断地为他们的代码标注,以便数据能够得到良好的输出展示。

4、开发者最喜欢的一些 TypeScript 功能

未知顶级类型

“unknown”类型在 TypeScript 3.0 中引入,作为与“any”类型对应的新“类型安全”。区分“unknown”和“any”两个概念的关键在于,“unknown”比“any”(“任何”自 2012 年以来就一直是 TypeScript 的组成部分)宽松很多。它与“any”非常相似,因为你可以为“unknown”分配任何值;但这里类型断言是很重要的,没有它什么都做不了。此外,你不能访问或调用 / 构造任何“unknown”类型的属性。

数组和元组上的映射类型

涉及到元组上的映射时,TypeScript 没有引入全新概念,而是在 TypeScript 3.1 中加入了有映射的对象类型。这与同数组和元组交互时应该采用的方式完全一致。这意味着不管你在用什么方式使用已存在的映射类型(如必需或部分),这些方法也能直接拿来处理数组和元组。这样,TypeScript 可以很好地适用于像 Promise.all 这样的函数。

Node.js 包与 tsconfig.json 的继承

使用 TypeScript 3.2 时你可以从 node_modules 解析 tsconfig.json。当你尝试访问 tsconfig.json 中的“extends”字段时,TypeScript 将查看 thenode_modules 包。它将在 node_modules 文件夹中查找 @my-team/tsconfig-base 的包。在进一步使用该包之前,TypeScript 会查找 package.json 中是否存在 tsconfig 字段,并且一旦找到它就会从字段中加载配置文件。如果找不到这样的字段,那么它将转向 tsconfig.json。在处理大型项目时,这一步骤被证明是很有用的。

Const 断言

TypeScript 3.4 引入了一个新的字面值构造,它被称为 const 断言。它的语法是一个类型断言,用 const 断言构造新的文字表达式时,你可以表示对象字面量带有只读属性,或者数组具有只读元组。

对 globalThis 进行类型检查

在全局范围内访问值一直是 TypeScript 的一个问题,这个问题在 TypeScript 3.4 中得到了解决,因为新版为 ECMAScript 中的 globalThis 提供了类型检查支持。globalThis 只是一个适用于全局范围的全局变量。此变量可让你从喜欢的任何环境中轻松访问全局范围。同样,你需要知道 globalThis 不显示两个全局变量,即 const 和 let。

在 JSX 中支持 defaultProps

TypeScript 3.0 为 JSX 中的 React 开发提供了一种新类型,称为 LibraryManagedAttributes。此类型用作帮助程序,用于在 prop 类型组件使用之前定义它的更改。这样就可以对推断和提供的映射与 prop 进行修改。

需要注意的是如果添加了显式类型注释,编译器将无法识别默认属性,因为默认属性是从 defaultProps 的属性类型推断出来的。

5、TypeScript 的优势

它是一种面向对象的语言,这种面向对象的语言具有接口、类、继承、模块等功能。

可选静态类型

TypeScript 附带可选的静态类型系统,是它的一大优势。你可以向属性、函数、变量等添加类型。因此在应用程序运行之前,编译器就能显示有关任何潜在问题(如果存在)的任何警告。类型能让开发人员知道自己需要哪种类型 API,在使用框架和库时这一点很有用。

需要记住的是使用类型是可选的。就是说开发人员不会被 TypeScript 强迫使用他们不想要的任何类型。但要记住,当应用程序规模变大,且随时间变得愈加复杂时,类型也会越来越体现其价值。

提供对 JavaScript 库的支持

你可以将 TypeScript 与现有的顶级 JavaScript 框架和库以及其他工具一起使用。

TypeScript 是可移植的

你可以在任何设备、浏览器或操作系统上运行 TypeScript。它可以在各种设备上轻松使用,全平台兼容。你可以在支持 JavaScript 的任何环境中运行 TypeScript。

更少的错误

在前端开发领域,如果开发者能更方便地发现编程过程中发生的错误就能节约很多时间。这也就是为什么你需要 TypeScript。使用 TypeScript 时,你可以确保代码库中没有无效代码。

智能感知

在你的项目中使用 TypeScript 的另一个好处是智能感知,因为它能帮助代码自动补完。写代码时智能感知能提供有用的提示。当今市面上所有重要的 IDE 都支持代码自动补完功能,包括 Sublime Text、Atom、WebStorm、VScode,还包括一些命令行编辑器。

TypeScript 很像 JS

TypeScript 代码完全在 JavaScript 中运行。这意味着你只需要对 JavaScript 有所了解即可开始使用 TypeScript。在代码执行方面,用 TypeScript 编写的代码被编译并转换为 JavaScript。

6、结论

开发者在已经意识到 TypeScript 可以大幅提高生产力,并轻松构建可靠且可扩展的应用程序。将它集成到现有的 JavaScript 是非常容易的,并且它可以轻松地与 React、Angular、Node 和 Vue 一起使用。

你还要知道 JavaScript 和 TypeScript 都在不断发展,它们绝不会相互竞争。它们只是相互补充,各自满足不同的需求。因此,你可以根据你的项目需求选择正确的解决方案。

原文链接:

https://aglowiditsolutions.com/blog/why-use-typescript/

typescript用什么软件写_为什么都2019年了大家还喜欢用TypeScript?相关推荐

  1. typescript用什么软件写_用TypeScript写了个低配版H5美图工具

    前言 最近两月在学习canvas时候,发现很多有意思的技术能力,特别是在图像处理这一领域.让我想起大学课堂教学的<数字图像处理>(冈萨雷斯 版本).但是很遗憾的是,大学上完课应付考试后全部 ...

  2. typescript用什么软件写_什么情况下,你应该使用TypeScript?(下)

    你好,欢迎收听极客视点. 此前,公众号"前端之巅"编译了开发者哈利勒·斯坦姆勒(Khalil Stemmler)的一篇文章,斯坦姆勒探讨了在什么情况下绝对应该使用 TypeScri ...

  3. opengl用什么软件写_汇才论文工具分享:写科研论文的都在用这些截图软件

    截图是一种学问,经常混迹论坛的相信都知道,"饶老师教你截图"的梗.由于经常有网友不使用系统自带的截图功能非要发手机屏拍的图,导致像素过低看不清,于是渐渐就行成了一种吐槽的梗,常见于 ...

  4. css字体样式代码大全_这都2020年了,还没了解CSS?

    对于新人来说想要了解css,就要从最基本的入手了解,讲真的学习css入门很简单,学习html和css短时间后你就可以制作一个网页,深入的去学习的话,就会很难.他就是从简--深--深--简的一个过程,如 ...

  5. post url 后面跟参数_都2019年了,还问GET和POST的区别

    1.前言 最近看了一些同学的面经,发现无论什么技术岗位,还是会问到 get 和 post 的区别,而搜索出来的答案并不能让我们装得一手好逼,那就让我们从 HTTP 报文的角度来撸一波,从而搞明白他们的 ...

  6. 显示器接口_都2019年了,还分不清你的显示器接口?快进来补课!

    把电脑主机和显示器连接起来看似是一个简单的任务,但是当我们拿着线对着电脑主机的时候却一脸茫然:诶这么多接口我要插哪个.诶这个接口怎么显示器上没有,随便接上之后又觉得:哇,显示效果怎么这么差,是我的显卡 ...

  7. 都2019年了,还不知道产品设计师是什么?

    介绍产品设计师是什么,与普通UI的区别,以及如何晋升. 前段时间有朋友来询问,产品设计师是一个什么样的岗位,要负责哪些工作? 我其实是比较奇怪的,这个概念已经兴起了一两年了,从阿里的全链路设计师到产品 ...

  8. 怎样才能把一个代码变成软件成品?一个初学者的困惑,我们写的代码都只能是解决一些数学问题而已。怎么把它变成一个软件。

    小弟疑惑... 怎样才能把一个代码变成软件成品?一个初学者的困惑,我们写的代码都只能是解决一些数学问题而已.怎么把它变成一个软件. 大神月... 对于您这个问题,当初也是我的好奇之处啊!其实你学好一门 ...

  9. 模板类的析构函数如何写_顶尖文案如何写?这6大模板、29个方法,奥美大咖都在用!|优惠最后1天...

    敲黑板划重点: <顶尖文案训练营>第5期将于2月20日(正月十六)开班,现在报名享受春节特惠8折优惠,今天是优惠最后1天!先到先得,速速报名抢位- 马上就是2.14情人节了,馒火火在这里提 ...

最新文章

  1. 软件质量保证与测试笔记——江湖救急版
  2. 内存分配与数据格式化(malloc与new)
  3. 道闸系统服务器价格,小区道闸系统价格服务客户
  4. .net如何引用该命名空间
  5. 用.net 2003开发Windows CE应用,解决与pocket pc通讯的问题
  6. vue 指令 v-model
  7. 一个html中同时引入js和ts,《使用require在ts里引入js》
  8. SpringCloud工作笔记069---The Hystrix timeout of 60000ms for the command sc-auth is set lower than the
  9. 输入URL经历的过程
  10. vue canvas插件_基于vue.js 制作在线桌椅定制选择交互特效源码
  11. 开发中很实用的10个效果
  12. 求素数的三种方法(Java实现)
  13. # WebView简介 #
  14. 视频转换大师免费版|视频转换大师免费版下载 v9.3.6
  15. Wowza 4.3.0安装和使用 并联合海康摄像头(RTSP)实现直播推流
  16. 调用个人微信API接口协议实现群发好友,群发群
  17. 被评为“影响世界千年的物理学家”,杨振宁的伟大,你根本不了解
  18. 关闭HttpClient
  19. (四)现代计算机系统的层次结构
  20. lawson算法_案例研究:Lawson合并后整合架构的新方法

热门文章

  1. 数组实例的find()和findIndex()
  2. spring 配置多数据源
  3. 遍历DOM元素的children属性遇到的坑
  4. ubuntu不显示壁纸,桌面右键无反应
  5. centos+php+nginx的php.ini无法加载的问题
  6. 小女子需要各位博友帮忙—— 一个关于JS 动态表格合并拆分问题
  7. C# 依据鼠标坐标取网页内成员坐标.ie
  8. .net 面试题系列文章五(附答案)
  9. 计算机检索技巧知识,初学者常用电脑技巧知识
  10. lombok 中的@Data注解