JavaScript是作为客户端语言引入的。Node.js的发展也将JavaScript标记为新兴的服务器端技术。但是,随着JavaScript代码的增长,它会变得更加混乱,从而难以维护和重用代码。此外,由于无法使用对象定向,强大的类型检查和编译时错误检查等功能,JavaScript无法作为成熟的服务器端技术在企业级获得成功。提出了TypeScript来弥合这一差距。
什么是TypeScript?
根据定义,“ TypeScript是用于应用程序规模开发的JavaScript。”
TypeScript是一种强类型化的,面向对象的编译语言。它是由Microsoft的Anders Hejlsberg(C#的设计师)设计的。TypeScript是一种语言,也是一组工具。TypeScript是已编译为JavaScript的JavaScript的类型化超集。换句话说,TypeScript是JavaScript加上一些附加功能。
TypeScript的功能
TypeScript只是JavaScript。TypeScript以JavaScript开头,以JavaScript结尾。Typescript采用JavaScript程序的基本构建块。因此,您只需要知道JavaScript即可使用TypeScript。为了执行的目的,所有TypeScript代码都将转换为等效的JavaScript。
TypeScript支持其他JS库。可以从任何JavaScript代码中使用已编译的TypeScript。TypeScript生成的JavaScript可以重用所有现有的JavaScript框架,工具和库。
JavaScript是TypeScript。这意味着任何有效的.js文件都可以重命名为.ts并与其他TypeScript文件一起编译。
TypeScript是可移植的。TypeScript可在浏览器,设备和操作系统之间移植。它可以在运行JavaScript的任何环境中运行。与同类脚本不同,TypeScript不需要专用的VM或特定的运行时环境即可执行。
TypeScript和ECMAScript
ECMAScript规范是脚本语言的标准化规范。ECMA-262共发布了六个版本。该标准的第6版的代号为“ Harmony”。TypeScript与ECMAScript6规范保持一致。
TypeScript采用ECMAScript5规范(即JavaScript的官方规范)中的基本语言功能。TypeScript语言功能(例如模块和基于类的方向)符合EcmaScript 6规范。此外,TypeScript还包含EcmaScript6规范不包含的泛型和类型注释等功能。
为什么要使用TypeScript?
TypeScript在扩展TypeScript的方式上优于CoffeeScript和Dart编程语言等其他同类语言。相反,诸如Dart,CoffeeScript之类的语言本身就是新语言,并且需要特定于语言的执行环境。
TypeScript的好处包括-
- 编译-JavaScript是一种解释型语言。因此,需要运行它来测试它是否有效。这意味着您编写所有代码只是为了在没有错误的情况下找不到任何输出。因此,您必须花费数小时来尝试查找代码中的错误。TypeScript编译器提供错误检查功能。如果TypeScript发现某种语法错误,它将编译代码并生成编译错误。这有助于在运行脚本之前突出显示错误。
- 强静态键入-JavaScript不是强类型。TypeScript通过TLS(TypeScript语言服务)带有可选的静态类型和类型推断系统。TLS可以根据其值来推断声明为无类型的变量的类型。
- TypeScript支持现有JavaScript库的类型定义。TypeScript定义文件(扩展名为.d.ts)为外部JavaScript库提供定义。因此,TypeScript代码可以包含这些库。
- TypeScript支持面向对象的编程概念,例如类,接口,继承等。
TypeScript的组件
本质上,TypeScript具有以下三个组成部分:
- 语言-它由语法,关键字和类型注释组成。
- TypeScript编译器-TypeScript编译器(tsc)将以TypeScript编写的指令转换为与之等效的JavaScript。
- TypeScript语言服务-“语言服务”在核心编译器管道周围提供了一个类似于编辑器的应用程序的附加层。语言服务支持一组常见的典型编辑器操作,例如语句完成,签名帮助,代码格式和大纲,着色等。
声明文件
编译TypeScript脚本时,可以使用一个选项来生成声明文件(扩展名为.d.ts),该文件用作已编译JavaScript中组件的接口。声明文件的概念类似于C / C ++中的头文件的概念。声明文件(扩展名为.d.ts的文件)为类型,函数调用和对jQuery,MooTools等JavaScript库的变量支持提供智能感知