TypeScript是流行的JavaScript编程语言的变体,它添加了一些对于企业开发来说很重要的关键功能。尤其TypeScript是强类型的,程序员可以将变量和其他数据结构声明为特定类型,例如字符串或布尔值,并且TypeScript将检查其值的有效性。这在松散类型的 JavaScript中是不可能的。
TypeScript强大的键入功能使许多功能成为可能,这些功能有助于使开发人员更加高效,尤其是在处理大型企业级代码库时。TypeScript是经过编译的,而不是像JavaScript那样进行解释,这意味着可以在执行之前捕获错误。执行后台增量编译的IDE可以在编码过程中发现此类错误。
尽管与JavaScript有关键的区别,但TypeScript仍可以在可以运行JavaScript的任何地方执行。这是因为TypeScript不会编译为二进制可执行文件,而是会编译为标准JavaScript。
TypeScript是JavaScript 的超集。尽管任何正确的JavaScript代码也都是正确的TypeScript代码,但TypeScript还具有不属于JavaScript的语言功能。如前所述,TypeScript独有的最突出的功能——为TypeScript命名的功能是强类型化:TypeScript变量与一种类型相关联,例如字符串,数字或布尔值,它告诉编译器什么样的数据它可以容纳。另外,TypeScript确实支持类型推断,并包含所有类型的所有类型,这意味着变量不必由程序员显式分配其类型。
TypeScript还用于设计面向对象的编程。在JavaScript中不直观的诸如继承和访问控制之类的概念很容易在TypeScript中实现。另外,TypeScript允许实现接口,这在JavaScript世界中是一个毫无意义的概念。也就是说,我们无法使用TypeScript进行编码,也无法使用JavaScript进行编码。这是因为TypeScript不是按常规意义编译的,例如C ++被编译为可以在指定硬件上运行的二进制可执行文件的方式。相反,TypeScript编译器将 TypeScript代码转码为功能等效的JavaScript。然后,可以从Web浏览器到配备Node.js的服务器,在任何JavaScript代码可以运行的任何地方运行生成的JavaScript。因此,如果说TypeScript只是一种生成JavaScript代码的好方法,那为什么还要麻烦地研究它呢?要回答这个问题,我们需要查看TypeScript的来源以及其用途。
在Microsoft内部开发后,TypeScript于2012年作为开源发布。当时的ZDNet文章对发生这种情况的原因提供了一个有趣的了解:“事实证明,最大的动机之一是试图开发的其他Microsoft团队的经验。并使用JavaScript维护Microsoft产品。”当时,Microsoft试图扩大Bing Maps的规模以使其成为Google Maps的竞争对手,并提供其Office套件的Web版本-JavaScript是该任务的主要开发语言。但是,从本质上讲,开发人员发现很难使用JavaScript编写与Microsoft旗舰产品相当的应用程序。因此,他们开发了TypeScript,以使其更易于构建可在JavaScript环境中运行的企业级应用程序。这是TypeType 官方项目站点上的语言标语的精神:“可扩展的JavaScript”。
为什么说TypeScript在工作上比普通JavaScript更好?尽管我们可以永无休止地争论一下面向对象编程的优点,但是现实是,许多从事大型企业项目的软件开发人员已经习惯了它,并且随着项目规模的扩大,它有助于代码重用。也不应该忽略工具可以在多大程度上提高开发人员的生产力。如前所述,大多数企业IDE支持后台增量编译,可以在工作时发现错误。(只要您的代码在语法上是正确的,它仍然可以进行翻译,但是生成的JavaScript可能无法正常工作;将错误检查等同为拼写检查。)这些IDE还可帮助你在深入学习代码时重构代码。
简而言之,当你想要Java之类的语言的企业功能和工具,但需要在JavaScript环境中执行代码时,可以使用TypeScript。从理论上讲,你可以编写TypeScript编译器自行生成的标准JavaScript,但是这将花费更长的时间,并且对于大型团队来说,集体理解和调试代码库变得更加困难。
除此之外,TypeScript还有另外一个巧妙的窍门:可以将编译器设置为针对特定的JavaScript运行时环境,浏览器甚至语言版本。由于任何格式正确的JavaScript代码也都是TypeScript代码,因此,可以采用编写到ECMAScript 2015规范的代码,其中包括许多新的语法功能,然后将其编译为与旧版本的兼容的JavaScript代码。
TypeScript也可以作为你选择的IDE的插件安装,这将为你提供上面我们所讨论的工具优势,并且还会处理将TypeScript编译为JavaScript的过程。由于TypeScript是由Microsoft开发的,因此可以为Visual Studio和Visual Studio Code提供高质量的插件就不足为奇了。但是,作为一个开放源代码项目,TypeScript已得到无处不在的适应,从像Eclipse这样的开源IDE 到像Vim这样的古老文本编辑器。整个项目可以从GitHub浏览和下载。一旦安装了TypeScript,就可以开始你的探索之旅了,这也意味着开始了解TypeScript语法的基础。由于JavaScript是TypeScript的基础,因此在开始之前,你需要熟悉JavaScript。
显然,TypeScript中最重要的语法功能是类型系统。该语言支持多种基本类型:
1.布尔值:简单的true / false值。
2.数字:在TypeScript中,就像在JavaScript中一样,所有数字都是浮点值-没有单独的整数。TypeScript支持十进制,十六进制,二进制和八进制文字。
3.字符串:文本数据的字符串。设置数据时,可以使用单引号或双引号将字符串引起来。
4.数组和元组:这些类型可以按指定顺序存储多个值。在数组中,各个值都是相同的数据类型,而在元组中,它们可以是异构的。TypeScript forEach()方法用于在数组中的每个元素上调用函数。
5.枚举:与C#中相同名称的类型一样,TypeScript枚举可以将人类可读的名称分配给一系列数字值。
6.任意:这是变量的一种类型,不必事先知道该变量的最终值-例如,它可以从用户输入或第三方库中获取其值。
7.对象:这是代表任何不是原始类型的类型的类型;这对于TypeScript的面向对象性质至关重要。
有两种不同的方式将类型明确分配给变量。第一个是尖括号语法:
let someValue :any = “这是一个字符串” ;
let strLength :number = (< 字符串> someValue )。长度;
第二个是as语法:
let someValue :any = “这是一个字符串” ; let strLength :number = (someValue as string )。长度;
这些代码片段(来自TypeScript文档)在功能上等效。两者都定义someValue为type的变量any并为其指定"this is a string"值,然后将其定义strLength为数字并将其内容的长度指定为值someValue。
TypeScript类型也可以通过推断来设置。也就是说,如果在不建立x类型的情况下将x的值设置为7,则编译器将假定x应该是数字。在某些情况下,编译器可能会推断出一个any类型,尽管你可以使用编译标志来确保不会发生这种情况。
TypeScript类型系统非常丰富,已经超出了本文的范围。有许多高级和实用程序类型。其中包括并集类型,它可以确定变量将是几种指定类型之一,而映射类型则是可以根据现有类型创建的类型,在其中你可以将现有类型中的每个属性转换为相同类型方式。例如,你可以为一个变量创建一个联合类型,该变量可以是数字或布尔值,而不是字符串或其他任何东西。或者你可以创建一个映射类型,将数组中的所有元素设置为只读。
本文尽可能详细地向大家介绍了TypeScript,相信大家对这门语言有了一定的认识,感兴趣的话可以深入地了解一下,动手下载安装TypeScript亲身去体会它的奥妙吧。
QCode09-04 14:38
Code大师09-04 14:50
不写代码你养我啊08-23 11:14
不写代码你养我啊09-17 18:02
要学习了06-18 18:13