Loading AI tools
程式語言,編譯成JavaScript的JavaScript超集 来自维基百科,自由的百科全书
TypeScript是由微软进行开发和维护[4]的一种开源的编程语言。TypeScript是JavaScript的严格语法超集,提供了可选的静态类型检查。
此条目需要更新。 (2021年8月21日) |
TypeScript的知名开发者有C#的首席架构师兼Delphi和Turbo Pascal的创始人——安德斯·海尔斯伯格[5][6][7][8]。
TypeScript是为开发大型应用程序而设计的,且可转译成JavaScript[9]。由于TypeScript是JavaScript的严格语法超集,因此任何现有的JavaScript程序都是合法的TypeScript程序。
TypeScript支持为现存JavaScript函数库添加类型信息的定义文件,方便其他程序像使用静态类型的TypeScript实体一样,使用现有程序库中的值,就像是C++的头文件可以描述目标文件(objectfile)的结构一样。有许多第三方头文件为热门函数库像是jQuery、MongoDB、Node.js和D3.js等提供定义文件。
TypeScript编译器本身也是用TypeScript编写,并被转译为JavaScript,以Apache许可证第二版发布。
经过微软两年的内部开发后,TypeScript于2012年10月首次发布(0.8版本)。[10][11]在发布后不久,Miguel de Icaza认可了这门语言,但批评了其糟糕的IDE支持性,仅有Microsoft Visual Studio IDE支持其代码,但此IDE当时未在Linux和OS X操作系统上发布[12][13]。如今,在其他IDE中(例如:Eclipse),通过Palantir Technologies提供的插件支持,能支持TypeScript语法[14][15]。大部分主流的文本编辑器,例如:Emacs、Vim、WebStorm、Atom[16]和微软发布的Visual Studio Code也能支持TypeScript语法[17]。
2013年发布的 TypeScript 0.9增加了对泛型的支持[18]。TypeScript 1.0在2014年的微软开发者大会上发布。[19]Visual Studio 2013 Update 2为TypeScript提供了原生支持[20]。
2014年7月,开发团队发布了新的TypeScript编辑器,声称其性能提高了5倍。同时,代码托管由CodePlex迁移至GitHub[21]。
2016年9月22日,TypeScript 2.0发布,其中引入了几个功能,例如开发者可以选择不为变量分配空值等[22]。
2018年7月30日,TypeScript 3.0发布[23],其中包含许多新功能,例如剩余参数(页面存档备份,存于互联网档案馆)、展开语法(页面存档备份,存于互联网档案馆)、带有元组的剩余参数、带有通用类型的剩余参数等[24]。
TypeScript起源于JavaScript在微软以及客户中开发大型应用中遇到的缺点[25]。处理复杂JavaScript代码带来的挑战使他们需要自定义工具来简化组件开发流程[26]。
TypeScript开发者寻求一种不破坏现有标准兼容性和跨平台支持的解决方案。直到ECMAScript标准为未来基于类编程提供支持后,Typescript开发便基于此方案。这形成了包含一组新的语法扩展的一个JavaScript编译器,一个基于此提案的超集,可将TypeScript语法编译为常规的JavaScript。从这个意义上来讲,TypeScript是ECMAScript2015预期内容的预览版本。提案中未包括的可选静态类型被添加到了TypeScript中,有助于促进工具和IDE支持。
TypeScript添加了ECMAScript 2015标准中定义的类、模块和箭头函数等语法的支持。
TypeScript是一种为JavaScript添加特性的语言扩展。增加的功能包括:
以下功能是从ECMA 2015反向移植而来:
在语法上,TypeScript很类似JScript .NET,它是另外一个微软对ECMA-262语言标准的实现,添加了对静态类型、经典的面向对象语言特性(如类、继承、接口和命名空间等)的支持。
TypeScript通过类型批注提供静态类型,以在编译时启动类型检查。这是可选的,而且可以忽略而使用JavaScript常规的动态类型。
function add(left: number, right: number): number {
return left + right;
}
对于基本类型的批注是number
、boolean
和string
。而弱类型或动态类型的结构则是any
类型。
类型批注可以被导出到一个单独的“声明文件”,让使用已被编译为JavaScript类型的TypeScript脚本中的类型信息仍可用。批注可以为现有的JavaScript库声明,就像Node.js和jQuery所做的那样。
没有给出类型时,TypeScript编译器会利用类型推断来推断类型。如果由于缺乏声明而不能推断出类型,那么它的类型将默认为动态any
类型。
当一个TypeScript脚本被编译时,有一个产生作为编译后的JavaScript的组件的一个接口而起作用的声明文件(具有扩展名.d.ts
)的选项。在这个过程中编译器基本上带走所有的函数和方法体而仅保留所导出类型的批注。当第三方开发者从TypeScript中使用它时,由此产生的声明文件就可以被用于描述一个JavaScript库或模块导出的虚拟的TypeScript类型。
declare module Arithmetics {
export function add(left: number, right: number): number;
export function subtract(left: number, right: number): number;
export function multiply(left: number, right: number): number;
export function divide(left: number, right: number): number;
}
可以为已存在的JavaScript库(如jQuery和Node.js)撰写类型声明文件。
TypeScript支持集成了可选的类别批注支持的ECMAScript6的类。
class Person {
private name: string;
private age: number;
constructor(name: string, age: number){
this.name = name;
this.age = age;
}
toString(): string {
return `${this.name}(${this.age})`;
}
}
function id<T>(x: T): T {
return x;
}
在TypeScript中,模块和命名空间是被区分开的。这两项功能在TypeScript中皆支持将类型、接口、函数和变量封装至容器内。命名空间(旧称内部模块)使用JavaScript的立即调用函数表达式来封装代码,而模块(旧称外部模块)则是以JavaScript函数库模式来达成(异步模块定义或CommonJS)。
TypeScript是JavaScript的超集。默认情况下编译器以ECMA Script 3(ES3)为目标但ES5也是受支持的一个选项。一个TypeScript应用可以利用已存在的JavaScript脚本。编译后的TypeScript脚本也可以在JavaScript中使用。
现有框架如jQuery和Node.js等受到完全支持。这些库的类型声明在源代码中提供。
此章节之真实性有待商榷,其部分或全部内容可能属于恶作剧,或含有需要改正的错误。 |
运行于任何平台上的任何网页浏览器都可以运行 TypeScript:[来源请求]由于它仅仅是被编译为标准的JavaScript,一个脚本既可以被预编译为JavaScript,也可以通过为TypeScript包含JavaScript编译器实时编译。
TypeScript编译器,叫做tsc
,本身也是用TypeScript写成的。可以将TypeScript编译为可以在任何JavaScript引擎(如浏览器)中执行的标准JavaScript。编译器包也包含了脚本解释器,用来执行编译器。同时也有个Node.js包,在Node.js平台执行。
另外还有一个用JavaScript写的alpha版本的客户端编译器,它在页面加载时,实时执行TypeScript代码。[28]
这种编译器的当前版本默认支持ECMAScript 2015。一个选项是允许以ECMAScript 2015为目标,以利用该版本独有的语言特性(比如生成器)。类是ECMAScript 2015标准的一部分,在这两个模式下都可以使用。
TypeScript是开源的,其源代码可以在Apache 2 License下从Github获得。这个项目由Microsoft维护,但是任何人可以通过在Github项目页发送反馈、提出建议和提交bugfixes而做出贡献。[32]
已有一些批评提到,TypeScript鼓励强类型,当前只有Microsoft Visual Studio支持在该语言上方便开发。最初的方案是在其它的编辑器上带来强类型,IntelliSense、代码完成和代码重构的功能,但这可能不是一个简单的任务。[33]此外,支持TypeScript开发的Visual Studio扩展不是开源的。最好的TypeScript开发体验是在Microsoft Windows上,[34]然而随着时间的流逝以及这种语言的开放性,加之编译器自我托管,而且用TypeScript自身写的,这很有可能会改变。通过编译器的源代码访问到AST(抽象句法树)以及详细的语言规范文档,社群已开始构建一个跨平台的编辑器,[35][36]利用和Visual Studio所用到的相同的语言服务以提供一个增强的编辑体验。编辑器仍然在概念检验的阶段,但已经运行于Linux、macOS和Windows,提供功能强度相同的IntelliSense、代码完成和句法高亮方法。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.