TypeScript是由微软进行开发和维护[4]的一种开源的编程语言。TypeScript是JavaScript的严格语法超集,提供了可选的静态类型检查。

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(TS) 是 JavaScript 的超集(Superset),由 Microsoft(微软) 开发。它在 JavaScript 的基础上增加了静态类型(Static Typing),让开发者可以在编写代码时提前发现错误,提高代码质量和可维护性。
✅ 强类型系统(可选的静态类型检查)
✅ 完全兼容 JavaScript(可以运行任何 JS 代码)
✅ 支持最新的 ES6/ESNext 特性(如 async/await
、装饰器等)
✅ 更好的代码提示和 IDE 支持(如 VS Code)
✅ 支持面向对象编程(OOP)(class
、interface
、enum
)
✅ 支持模块化(import/export
)
一句话总结:TypeScript = JavaScript + 类型检查 + ES6/ESNext 特性 + 更好的开发体验
一、TypeScript背景
经过微软两年的内部开发后,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设计背景
TypeScript起源于JavaScript在微软以及客户中开发大型应用中遇到的缺点[25]。处理复杂JavaScript代码带来的挑战使他们需要自定义工具来简化组件开发流程[26]。
TypeScript开发者寻求一种不破坏现有标准兼容性和跨平台支持的解决方案。直到ECMAScript标准为未来基于类编程提供支持后,Typescript开发便基于此方案。这形成了包含一组新的语法扩展的一个JavaScript编译器,一个基于此提案的超集,可将TypeScript语法编译为常规的JavaScript。从这个意义上来讲,TypeScript是ECMAScript2015预期内容的预览版本。提案中未包括的可选静态类型被添加到了TypeScript中,有助于促进工具和IDE支持。
ECMAScript 6支持
TypeScript添加了ECMAScript 2015标准中定义的类、模块和箭头函数等语法的支持。
三、TypeScript语言特性
TypeScript是一种为JavaScript添加特性的语言扩展。增加的功能包括:
- 类型批注和编译时类型检查
- 类型推断
- 类型擦除
- 接口
- 枚举
- Mixin
- 泛型编程
- 命名空间
- 元组
- async/await
以下功能是从ECMA 2015反向移植而来:
- 类
- 模块[27]
- 匿名函数的箭头语法
- 可选参数以及默认参数
在语法上,TypeScript很类似JScript .NET,它是另外一个微软对ECMA-262语言标准的实现,添加了对静态类型、经典的面向对象语言特性(如类、继承、接口和命名空间等)的支持。
四、TypeScript 语法
4.1. 变量声明(强类型)
错误示例:
let age: number = "twenty-five"; // ❌ 报错:不能将 string 赋值给 number
4.2. 函数(参数 & 返回值类型)
错误示例:
4.3. 可选参数 & 默认参数
function greet(name: string, age?: number): string { return age ? `Hello ${name}, you are ${age} years old.` : `Hello ${name}!`; } console.log(greet("Alice")); // ✅ "Hello Alice!" console.log(greet("Bob", 25)); // ✅ "Hello Bob, you are 25 years old."
4.4. 接口(Interface)
interface Person { name: string; age: number; greet(): void; } const user: Person = { name: "Alice", age: 25, greet() { console.log(`Hello, my name is ${this.name}.`); } }; user.greet(); // ✅ "Hello, my name is Alice."
4.5. 类(Class)
class Animal { name: string; constructor(name: string) { this.name = name; } speak(): void { console.log(`${this.name} makes a noise.`); } } class Dog extends Animal { speak(): void { console.log(`${this.name} barks.`); } } const dog = new Dog("Buddy"); dog.speak(); // ✅ "Buddy barks."
4.6. 泛型(Generics)
4.7. 类型别名(Type Alias)