TypeScript
是一種開源的編程语言，该语言项目由微軟进行维护和管理。TypeScript不仅包含JavaScript的语法，而且还提供了靜態型別检查以及使用看起來像類別為基的物件導向編程語法操作Prototype。C#的首席架构师以及Delphi和Turbo Pascal的创始人安德斯·海尔斯伯格参与了TypeScript的开发。
TypeScript是为开发大型應用而设计的，并且TypeScript可转译成JavaScript。由于TypeScript是JavaScript的严格超集，任何現有的JavaScript程式都是合法的TypeScript程序。
TypeScript支援為現存JavaScript函式庫添加類型資訊的定义文件，方便其他程序像使用静态类型的值一样使用现有库中的值。目前有第三方提供常用函式庫如jQuery、MongoDB、Node.js和D3.js的定义文件。
TypeScript编译器本身也是用TypeScript编写，并被转译为JavaScript，以Apache许可证第二版发布。
经过微软两年的内部开发后，TypeScript于2012年10月首次发布0.8版本。 在发布后不久，Miguel de Icaza认可了这门语言，但批评了其糟糕的IDE支持性，仅有Microsoft Visual Studio IDE支持其代码，但此IDE当时未在Linux和OS X操作系统上发布。 如今，在其他IDE中（例如 Eclipse），通过Palantir Technologies提供的插件支持，能支持TypeScript语法。 大部分主流的文本编辑器，例如Emacs、Vim、Webstorm、Atom和微软发布的Visual Studio Code也能支持TypeScript语法.
2013年发布的TypeScript 0.9增加了对泛型的支持。TypeScript 1.0在2014年的微软开发者大会上发布。Visual Studio 2013 Update 2为TypeScript提供了原生支持。
2014年7月，开发团队发布了新的TypeScript编辑器，声称其性能提高了5倍。同时，代码托管由CodePlex迁移至GitHub。
2016年9月22日，TypeScript 2.0发布，其中引入了几个功能，例如开发者可以选择不为变量分配空值等。
2018年7月30日，TypeScript 3.0发布 ，其中包含许多新功能，例如剩余参数、展开语法、带有元组的剩余参数、带有通用类型的剩余参数等。
TypeScript起源于Javascript在微软以及客户中开发大型应用中遇到的缺点。处理复杂JavaScript代码带来的挑战使他们需要自定义工具来简化组件开发流程。
TypeScript开发者寻求一种不破坏现有标准兼容性和跨平台支持的解决方案。知道ECMAScript标准为未来基于类编程提供支持后, Typescript开发便基于此方案。这形成了包含一组新的语法扩展的一个JavaScript编译器，一个基于此提案的超集，可将TypeScript语法编译为常规的JavaScript。从这个意义上来讲，TypeScript是ECMAScript 2015预期内容的预览版本。提案中未包括的可选静态类型被添加到了TypeScript中，有助于促进工具和IDE支持。
TypeScript 添加了ECMAScript 2015标准中定义的类、模块和箭头函数等语法的支持。
TypeScript 是一种给 JavaScript 添加特性的语言扩展。增加的功能包括：
以下功能是从ECMA 2015反向移植而来：
在语法上，TypeScript 很类似 JScript .NET，它是另外一个微软对ECMA-262语言标准的实现，添加了对静态类型、经典的面向对象语言特性（如类、继承、接口和命名空间等）的支持。 TypeScript 通过类型批注提供静态类型，以在编译时启动类型检查。这是可选的，而且可以忽略而使用JavaScript常规的动态类型。
function Add(left: number, right: number): number {
对于基本类型的批注是codice_1、codice_2 和 codice_3。而弱型別或动态类型的结构则是 codice_4 类型。
类型批注可以被导出到一个单独的“声明文件”，让使用已被编译为 JavaScript 类型的 TypeScript 脚本中的类型信息仍可用。批注可以为现有的JavaScript库声明，就像 Node.js 和 jQuery 所做的那样。
没有给出类型时，TypeScript 编译器會利用类型推断来推断类型。如果由于缺乏声明而不能推断出类型，那么它的类型將默认為动态 codice_4 类型。 当一个 TypeScript 脚本被编译时，有一个产生作为编译后的JavaScript的组件的一个接口而起作用的声明文件（具有扩展名.d.ts）的选项。在这个过程中编译器基本上带走所有的函数和方法体而仅保留所导出类型的批注。当第三方开发者从TypeScript中使用它时，由此产生的声明文件就可以被用于描述一个JavaScript库或模块导出的虚拟的TypeScript类型。
声明文件的概念类似于C/C++中头文件的概念。
可以为已存在的JavaScript库（如 jQuery 和 Node.js）撰寫写类型声明文件。 TypeScript 支持集成了可选的類別批注支持的 ECMAScript 6的类。
class Person {
TypeScript 支援函式编程。以下為恆等函數的範例： function id(x: T): T {
在 TypeScript 中，模組和命名空間是被區分開的。這兩項功能在 TypeScript 中皆支援將類型、介面、函數和變數封裝至容器內。命名空間（舊稱內部模組）使用 JavaScript 的立即呼叫函式表達式來封裝程式碼，而模組（舊稱外部模組）則是以 JavaScript 函式庫模式來達成（非同步模組定義 或 CommonJS）。
TypeScript 是 JavaScript 的一个超集。默认情况下编译器以 ECMAScript 3（ES3）为目标但ES5也是受支持的一个选项。一个 TypeScript 应用可以利用已存在的JavaScript脚本。编译后的 TypeScript 脚本也可以在JavaScript中使用。
现有框架如 jQuery 和 Node.js 等受到完全支持。这些库的类型声明在源代码中提供。 运行于任何平台上的任何网页浏览器都可以运行 TypeScript：由于它仅仅是被编译为标准的 JavaScript，一个脚本既可以被预编译为 JavaScript，也可以通过为 TypeScript 包含JavaScript编译器实时编译。 TypeScript编译器，叫做codice_6，本身也是用TypeScript写成的。可以将TypeScript编译为可以在任何JavaScript引擎（如浏览器）中执行的标准JavaScript。编译器包也包含了脚本解释器，用来执行编译器。同时也有个Node.js包，在Node.js平台执行。
另外还有一个用JavaScript写的alpha版本的客户端编译器，它在页面载入时，实时执行TypeScript代码。
这种编译器的当前版本默认支持ECMAScript 5。一个选项是允许以ECMAScript 2015为目标，以利用该版本独有的语言特性（比如生成器）。类是ECMAScript 2015标准的一部分，在这两个模式下都可以使用。 TypeScript是开源的，其源代码可以在Apache 2 License下从Github获得。这个项目由Microsoft维护，但是任何人可以通过在Github项目页发送反馈、提出建议和提交bugfixes而做出贡献。
已有一些批评提到，TypeScript鼓励强类型，当前只有Microsoft Visual Studio支持在该语言上方便开发。最初的方案是在其它的编辑器上带来强类型，, 代码完成和代码重构的功能，但这可能不是一个简单的任务。此外，支持TypeScript开发的Visual Studio扩展不是开源的。最好的TypeScript开发体验是在Microsoft Windows上，然而随着时间的流逝以及这种语言的开放性，加之编译器自我托管，而且用TypeScript自身写的，这很有可能会改变。通过编译器的源代码访问到AST（抽象句法树）以及详细的语言规范文档，社群已开始构建一个跨平台的编辑器，利用和Visual Studio所用到的相同的语言服务以提供一个增强的编辑体验。编辑器仍然在概念检验的阶段，但已经运行于Linux, OSX和Windows，提供功能强度相同的IntelliSense,代码完成和句法高亮方法。