什么是TypeScript? 强类型JavaScript

什么是TypeScript? TypeScript定义

TypeScript是流行的JavaScript编程语言的变体,它添加了一些对于企业开发很重要的关键功能。 特别是,TypeScript是强类型的 -程序员可以将变量和其他数据结构声明为特定类型,例如字符串或布尔值,并且TypeScript将检查其值的有效性。 这在松散类型的 JavaScript中是不可能的。

TypeScript强大的键入功能使许多功能成为可能,这些功能有助于使开发人员更加高效,尤其是在处理大型企业级代码库时。 TypeScript是经过编译的,而不是像JavaScript那样进行解释,这意味着可以在执行之前捕获错误。 执行后台增量编译的IDE可以在编码过程中发现此类错误。

[ 也在InfoWorld上:评论的10个最佳JavaScript编辑器 ]

尽管与JavaScript有关键的区别,但TypeScript仍可以在可以运行JavaScript的任何地方执行。 这是因为TypeScript不会编译为二进制可执行文件,而是会编译为标准JavaScript。 让我们深入了解更多信息。

TypeScript与JavaScript  

TypeScript是JavaScript的超集 。 尽管任何正确JavaScript代码也都是正确的TypeScript代码,但TypeScript还具有不属于JavaScript的语言功能。 如前所述,TypeScript独有的最突出的功能-为TypeScript命名的功能是强类型化:TypeScript变量与一种类型相关联例如字符串,数字或布尔值,它告诉编译器什么样的数据它可以容纳。 另外,TypeScript确实支持类型推断,并包含所有类型的所有类型,这意味着变量不必由程序员显式分配其类型。 稍后再进行更多说明。

TypeScript还设计用于面向对象的编程-JavaScript,不是很多。 在JavaScript中不直观的诸如继承和访问控制之类的概念很容易在TypeScript中实现。 另外,TypeScript允许您实现接口,这在JavaScript世界中是一个毫无意义的概念。

就是说,您无法使用TypeScript进行编码,也无法使用JavaScript进行编码。 这是因为TypeScript不是按常规意义编译的,例如C ++被编译为可以在指定硬件上运行的二进制可执行文件的方式。 相反,TypeScript编译器 TypeScript代码码为功能等效JavaScript。 肖恩·麦克斯韦(Sean Maxwell)在GitConnected上发表的这篇文章提供了一些很棒的面向对象的TypeScript代码片段及其JavaScript等效示例。 然后,可以从Web浏览器到配备Node.js的服务器,在任何JavaScript代码可以运行的任何地方运行生成JavaScript。

因此,如果最后说来TypeScript只是一种生成JavaScript代码的好方法,那为什么还要麻烦它呢? 要回答这个问题,我们需要查看TypeScript的来源以及其用途。

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

准备开始使用TypeScript玩了吗? 安装语言很容易。 如果您已经在开发计算机上使用Node.js,则可以使用NPM(Node.js程序包管理器)进行安装。 5分钟内的官方TypeScript教程将引导您完成此过程。

TypeScript也可以作为您选择的IDE的插件安装,这将为您提供上面我们所讨论的工具优势,并且还会处理将TypeScript编译为JavaScript的过程。 由于TypeScript是由Microsoft开发的,因此可以为Visual StudioVisual Studio Code提供高质量的插件就不足为奇了。 但是,作为一个开放源代码项目,TypeScript已得到无处不在的适应,从像Eclipse这样的开源IDE到像Vim这样的古老文本编辑器。 整个项目可以从GitHub浏览和下载。

[ 同样在InfoWorld上:审查了6种最佳JavaScript IDE ]

TypeScript语法

一旦安装了TypeScript,就可以开始探索了,这意味着了解TypeScript语法的基础。 由于JavaScript是TypeScript的基础,因此在开始之前,您需要熟悉JavaScript。 毫无疑问,您的主要兴趣点将是使该语言独特的TypeScript特定功能。 我们将在此处探讨重点。

TypeScript类型

显然,TypeScript中最重要的语法功能是类型系统。 该语言支持多种基本类型

  • 布尔值:简单的true / false值。
  • 数字:在TypeScript中,就像在JavaScript中一样,所有数字都是浮点值-没有单独的整数。 TypeScript支持十进制,十六进制,二进制和八进制文字。
  • 字符串:文本数据的字符串。 设置数据时,可以使用单引号或双引号将字符串引起来。 您也可以使用反引号( ` )将字符串括在多行中,并且可以使用${ expr }语法将表达式嵌入字符串中。
  • 数组和元组:这些类型使您可以按指定顺序存储多个值。 在数组中,各个值都是相同的数据类型,而在元组中,它们可以是异构的。 TypeScript forEach()方法用于在数组中的每个元素上调用函数。
  • 枚举:与C#中相同名称的类型一样,TypeScript枚举使您可以将人类可读的名称分配给一系列数字值。
  • 任意:这是变量的一种类型,您不必事先知道该变量的最终值-例如,它可以从用户输入或第三方库中获取其值。
  • 对象:这是代表任何不是原始类型的类型的类型; 这对于TypeScript的面向对象性质至关重要。

有两种不同的方式将类型明确分配给变量。 第一个是尖括号语法:

let someValue: any ="this is a string";
let strLength: number = (<string>someValue).length;

第二是as语法:

let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;

这些代码片段(来自TypeScript文档)在功能上等效。 两者都将someValue定义为any类型的变量,并为其指定"this is a string"作为值,然后将strLength定义为数字,并为其指定someValue内容的长度。

TypeScript类型也可以通过推断来设置。 也就是说,如果在不建立x类型的情况下将x的值设置为7,则编译器将假定x应该是数字。 在某些情况下,编译器可以推断any类型,尽管您可以使用编译标志来确保不会。

TypeScript类型系统非常丰富,已经超出了本文的范围。 有许多高级实用程序类型。 其中包括并集类型 ,它们使您可以确定变量将是几种指定类型之一,而映射类型则是可以根据现有类型创建的类型,在其中您可以将现有类型中的每个属性转换为相同类型方式。 例如,您可以为一个变量创建一个联合类型,该变量可以是数字或布尔值,而不是字符串或其他任何东西。 或者您可以创建一个映射类型,将数组中的所有元素设置为只读。

TypeScript界面

与大多数面向对象的语言一样,TypeScript具有接口,该接口允许用户定义自己的类型。 接口建立对象所具有的属性以及与这些属性相关联的类型。 TypeScript接口可以具有可选属性。 有关语法的更多信息, 请查看TypeScript文档

TypeScript泛型

TypeScript还与Java和C#等面向对象的语言共享泛型的概念。 (C ++中的等效功能称为模板。)在TypeScript中,通用组件可以在多种类型上工作,而不仅仅是一种类型,具体取决于这些组件在代码中的调用位置。 这是TypeScript文档中的一个非常简单的示例 。 首先,考虑以下函数,该函数接受一个参数,然后立即返回它:

function identity(arg: any): any {
    return arg;
}

由于该函数是使用any类型定义的,因此它将接受您选择向其抛出的任何类型的参数。 但是,它返回的将是any类型。 这是使用泛型的函数版本:

function identity<T>(arg: T): T {
    return arg;
}

该代码包含类型变量 T ,该变量捕获传入参数的类型并将其存储以备后用。

泛型还有很多,这是使大型企业项目中的代码重用成为可能的关键。 有关详细信息,请查看TypeScript文档

TypeScript类  

在面向对象的编程中, 继承了功能,并依次充当对象的构建块。 传统上,JavaScript不使用类,而是依靠函数和基于原型的继承,但是该概念已作为标准ECMAScript 2015版本的一部分添加到了语言中。 类已经是TypeScript的一部分,现在TypeScript使用与JavaScript相同的语法。 TypeScript编译器的好处之一是,它可以将带有JavaScript类的代码转换为符合2015年之前标准的旧式JavaScript代码。

TypeScript日期

有许多方法和对象可用于在TypeScript中获取和设置日期和时间,这些方法和对象大多是从JavaScript继承的。 JavaTPoint具有良好的工作原理

[ 同样在InfoWorld上:TypeScript与JavaScript:了解差异 ]

TypeScript教程  

准备更深入了吗? 掌握这些TypeScript教程的最新知识:

如果您想学习如何将TypeScript与React结合使用,Facebook开发的用于构建UIJavaScript库,请查看Ross Bulat的《 如何将React与Redux结合使用TypeScript》以及 TypeScript文档中有关React和Webpack的部分 。 学习愉快!  

翻译自: https://www.infoworld.com/article/3538428/what-is-typescript-strongly-typed-javascript.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值