TypeScript
TypeScript 是微软开发的一款开源编程语言,它是 JavaScript 的一个超集,在 JavaScript 的基础上添加了可选的静态类型和基于类的面向对象编程等特性。[1][2]TypeScript 代码通过编译器转译为 JavaScript 代码,可运行在任何浏览器、任何操作系统以及任何支持 JavaScript 的宿主环境上。[1][3]该语言由 Anders Hejlsberg 主导设计,旨在帮助开发者更高效地构建和管理大规模 JavaScript 应用程序。[3]
历史
TypeScript 由微软公司开发,于2012年10月首次公开发布。[1]它的诞生源于使用 JavaScript 开发大型项目时所面临的挑战——随着项目规模的增长,JavaScript 动态类型特性导致的类型相关错误越来越难以在开发阶段被及时发现。[1][4]TypeScript 通过引入静态类型系统,使得开发工具(如 IDE)能够在代码运行前就捕获潜在的类型错误,从而提升了大型应用的开发效率和代码质量。[4]
2025年3月,微软宣布将大幅提升 TypeScript 编译器的性能。[1]2026年3月23日,微软发布了 TypeScript 6.0,这是基于原有 JavaScript 代码库的最后一个版本,作为一个过渡版本,旨在为向 7.0 版本迁移做准备。[1]同日,微软宣布未来的 TypeScript 7.0 将使用 Go 语言重写底层编译器,预计编译速度将比 TypeScript 6.0 快约 10 倍。[1]2026年4月,微软发布了 TypeScript 7.0 的 Beta 版本。[1]
设计目标
TypeScript 的核心设计目标是成为 JavaScript 程序的静态类型检查器——即在代码运行之前运行的工具,用于确保程序中的类型是正确的。[4]它在不改变 JavaScript 运行时行为的前提下,提供了一套类型系统,使开发者能够更早地发现和修复错误。[2]
具体而言,TypeScript 的设计遵循以下原则:
- **JavaScript 的超集**:所有合法的 JavaScript 代码在语法上都是合法的 TypeScript 代码,TypeScript 与 JavaScript 的运行时行为完全相同。[2]
- **可选的静态类型**:开发者可以自由选择是否添加类型注解,类型系统是渐进式的。[3]
- **类型推断**:TypeScript 能够自动推断许多类型,减少了显式类型注解的需求。[2]
- **编译时类型检查**:类型检查发生在编译阶段,编译后生成的 JavaScript 代码中不包含类型信息。[2]
主要特性
类型系统
TypeScript 的类型系统是其最核心的特性。它支持多种类型,包括基本类型(如 `string`、`number`、`boolean`)、数组、元组、枚举、`any`、`void`、`never` 等。[2]TypeScript 采用结构类型系统(也称为“鸭子类型”),即类型的兼容性取决于其成员结构而非显式声明。[4]
类型推断
TypeScript 可以在许多情况下自动推断变量的类型,无需开发者显式注解。例如,当创建一个变量并赋予一个特定值时,TypeScript 会将该值作为其类型。[2][5]
接口与泛型
TypeScript 支持接口(Interface),用于定义对象的结构,以及泛型(Generics),用于创建可重用的、类型安全的组件。[4]
声明文件
TypeScript 支持为已存在的 JavaScript 库编写声明文件(以 `.d.ts` 为扩展名),从而为这些库提供类型信息,使其能够在 TypeScript 项目中被类型安全地使用。[1]
对现代 ECMAScript 特性的支持
TypeScript 支持许多 ECMAScript 新特性,并允许开发者将代码编译为不同版本的 JavaScript(如 ES5、ES6 等),以兼容不同的运行环境。[1]
开发工具与生态系统
TypeScript 编译器(`tsc`)是官方的参考实现,可通过 npm 安装使用。[3]主流的代码编辑器(如 Visual Studio Code、WebStorm 等)和构建工具(如 Webpack、Rollup 等)都对 TypeScript 提供了良好的支持。[4]
TypeScript 拥有活跃的开源社区,其源代码托管在 GitHub 上。[3]微软为 TypeScript 项目采用了开源行为准则。[3]