Logo
Section 1 / 4

TypeScript 简介

在本课程中,我们将对编程语言 TypeScript 有一个高层次的理解。

导入

TypeScript 简介

在本课程中,我们将对编程语言 TypeScript 有一个高层次的理解。

TypeScript 是在 JavaScript 之上的语言,JavaScript 中所有可能的功能在 TypeScript 中都能使用——它本质上是 JavaScript 的超集。TypeScript 提供了两大优势。第一个优势是,它可以将 TypeScript 编译为 JavaScript,从而让那些并非所有浏览器都支持的高级 ECMAScript 特性得以通过 polyfill 使用。它相当于将其他静态检查工具与 Babel 结合在一起。

第二个优势在于,TypeScript 能够强制实施静态类型,从而在开发生命周期早期捕捉潜在问题。这减少了对部分单元测试的需求,并能在设计阶段分析代码以发现运行时错误。

TypeScript 于 2012 年 10 月 1 日正式发布,但其起源可追溯至两年前(2010 年)在微软雷德蒙德总部内部开发的一个项目。该项目是开源的,托管在 Github.com 上,采用 Apache2 许可证。

TypeScript 的受欢迎程度逐年上升。它拥有 317 个分支、228 名贡献者、48 次发布,每月产生超过 188 个拉取请求,拥有超过 3600 个分支和 2.5 万个星标。每两个月稳定发布一个新版本,加上大量开发者持续贡献,使其成为一个卓越的开源项目。它发展迅速,能够紧跟开发者需求,并适应网页技术快速演进的步伐。

TypeScript 并不仅仅被其创建者微软所使用。虽然确实有许多微软产品采用了 TypeScript,例如 Microsoft Teams、Visual Studio Team Services(VSTS)、在线版 Office 和 Visual Studio Code(VSCode),但其他科技巨头也纷纷借鉴了静态类型带来的优势。谷歌自 Angular 2 起开始使用 TypeScript,Slack 也将其 JavaScript 代码库迁移至 TypeScript,此外像 Ubisoft、Asana、爱立信、Upwork、彭博社和 Lyft 等公司也陆续跟进。我提到这些使用 TypeScript 的公司,是为了强调成千上万开发者投入其中,以及数百万行代码的积累。这些开发者背景各异。除了整个行业投入的巨大工作量和知识沉淀外,这也说明在你之前已有许多人面临过是否选择 TypeScript 的决策,并最终选择了它。尽管大多数例子来自大型项目,但它们都有一个共同点:总有人需要编写和维护代码。静态类型在从小到大的各类项目中都展现出显著价值。

关于谁在主导 TypeScript 的发展,目前由 Anders Hejlsberg 负责。他是 Turbo Pascal、Delphi、C# 的创造者,如今也是 TypeScript 的缔造者。Hejlsberg 出生于上世纪六十年代(1960 年),职业生涯中获得过诸多奖项,也是该 GitHub 项目提交代码最多的开发者。这样一位杰出工程师担任项目负责人,极大提升了 TypeScript 语言的成熟度。

TypeScript 社区远不止于其代码仓库本身。StackOverflow 上的相关讨论非常活跃,问题数量超过 3.5 万个。各种框架的 TypeScript 示例丰富多样,无论是 Angular 还是 React,都能轻松找到用 TypeScript 编写的示例,甚至像著名的 TodoMVC 项目也有 TypeScript 实现。

TypeScript 的核心理念是在设计阶段提供强类型语言支持,但生成的代码中不包含任何类型信息。类型信息在编译过程中会被移除,包括类型、接口、别名等,最终输出的是标准的 JavaScript 文件。这种移除看似合理,但运行时缺乏类型信息意味着设计不能依赖运行时动态判断类型。当我们进行类型比较以确定所用接口时,会遇到实际挑战。请记住,接口和类型在运行时并不存在。因此,在执行的代码中如何实现这类检查,便成为一个值得思考的问题。

TypeScript 语言哲学