什么是“脚本语言”?在维基百科上的通俗解释是:一般使用文本保存,不需要编译器进行编译的,可以直接由解释器执行的语言。脚本语言有很多种,但我们在项目开发过程中,使用的最多的脚本语言应该就是 Javascript了。

随着这两年小程序开发流行起来之后,不管是微信小程序还是其他平台的小程序,我们经常会发现,在创建项目的时候,会让我们选择开发语言: Javascript 或 Typescript 。

它们之间的区别是什么呢?到底怎么选?估计有不少人在刚开始接触小程序的时候会和我有一样的疑问,并带着这个疑问选择了自己比较熟悉的 Javascript。

首先,我们来了解一下这两种语言。

Javascript

JavaScript 是一种具有函数优先的、轻量级的、解释型(即时编译型)的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中。

Javascript 基于原型编程,是多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。它遵循ECMAScript标准。ECMAScript,描述了Javascript语言的语法和基本对象;文档对象模型(DOM),描述处理网页内容的方法和接口;浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口。

Javascript主要有以下特点:

  • JavaScript 是一种脚本编写语言,无需编译,只要嵌入 HTML 代码中,就能由浏览器逐行加载解释执行。
  • JavaScript 是一种基于对象的语言,可以创建对象同时使用现有对象。但是 Javascript 并不支持其它面向对象语言所具有的继承和重载功能。
  • JavaScript 的语法简单,使用的变量为弱类型。
  • JavaScript 语言较为安全,仅在浏览器端执行,不会访问本地硬盘数据。
  • JavaScript 语言具有动态性。JavaScript 是事件驱动的,只根据用户的操作做出相应的反应处理。
  • JavaScript 只依赖于浏览器,与操作系统的因素无关。因此 JavaScript 是一种跨平台的语言。
  • JavaScript 兼容性较好,能够与其他技术(如 XML,REST API 等)一起使用。

TypeScript

TypeScript 是 Microsoft 开发和维护的一种开源的面向对象的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成。它是 JavaScript 的超集,可以被编译成 Javascript;它包含了 JavaScript 的所有元素,并扩展了 JavaScript 的语法;它还可以载入 JavaScript 代码运行(用 Javascript 编写的合法代码,在Typescript 中依然有效)。

语法上,TypeScript 很类似于 JScript .NET,另外一个添加了对静态类型,经典的面向对象语言特性如类,继承,接口、枚举、泛型和命名空间等的支持的 Microsoft 对 ECMAScript 语言标准的实现。

Typescript的主要特点有:

  • TypeScript 是 Microsoft 推出的开源语言,使用 Apache 授权协议
  • TypeScript 增加了静态类型、类、模块、接口和类型注解
  • TypeScript 可用于开发大型的应用
  • TypeScript 易学易于理解

Javascript 和 Typescript 之间的主要差异

  • Typescript 是纯面向对象的编程语言,而 Javascript 是一种脚本语言(尽管 Javascript 是基于对象的)。
  • TypeScript 通过类型注解提供编译时的静态类型检查,而 Javascript 不支持静态类型。
  • TypeScript 中的数据要求带有明确的类型,JavaScript不要求。
  • TypeScript 为函数提供了缺省参数值(可选参数)。
  • TypeScript 引入了 JavaScript 中没有的“类”概念。
  • TypeScript 中引入了模块的概念,可以把声明、数据、函数和类封装在模块中。

总结

尽管 Typescript 自从推出后一直受到追捧、发展的很好,越来越受欢迎。但是,毕竟 Typescript 在经过编译之后依旧是 Javascript 语言,所以 Javascript 才是最终的归宿。

当然,选择何种语言是根据开发者自己的实际情况而定,个人建议在实际工作中最好还是选择自己熟练掌握一门语言。