TypeScript 手册

# 关于本手册

JavaScript 被引入编程社区二十多年后,现在已成为有史以来最广泛使用的跨平台语言之一。起初它还只是一门为网页添加零星交互性的小型脚本语言,现在则成为了各种规模的前后端应用的首选语言。虽然用 JavaScript 编写的应用的大小、范围和复杂性呈指数级增长,但JavaScript 语言表达不同代码单元之间关系的能力却没有增强。再加上 JavaScript 非常独特的运行时语义,语言和程序复杂性之间的这种不匹配使得 JavaScript 开发成为难以大规模管理的任务。

程序员编码时最常见的错误可以说就是类型错误:期望某种值,但使用的却是另一种值。导致这种错误的原因很多,可能是简单的拼写错误,对库的 API 接口理解错误,对运行时行为的理解不正确,或者是其它的错误。TypeScript 的目标就是成为 JavaScript 应用的一个静态类型检查器 —— 换句话说,它是一个在代码执行前先运行的工具(静态),可以确保应用的类型是正确的(类型检查)。

如果你接触 TypeScript 的时候还没有学过 JavaScript,并且打算将 TypeScript 作为你的第一语言,那么我推荐你阅读一下 Microsoft Learn JavaScript tutorial (opens new window) 的文档或者 JavaScript at the Mozilla Web Docs (opens new window)。如果你有其他语言的学习经验,那么阅读手册之后你应该就能很快掌握 JavaScript 的语法了。

# 本手册的结构

本手册包括两个部分:

  • 手册

    TypeScript 手册旨在成为一份向普通程序员解释 TypeScript 的综合文档。你可以在左边导航栏按照从上到下的顺序阅读手册。

    每一章或每一页都能让你对给定的概念有一个深刻的理解。TypeScript 手册不是一份完整的语言规范,但它旨在成为一份介绍语言所有特性和行为的综合性指南。

    阅读完本手册的读者应该能够:

    • 阅读并理解常用的 TypeScript 语法和模式
    • 解释重要的编译选项的效果
    • 在大多数情况下正确地预测类型系统的行为

    为了清晰和简洁起见,本手册的主要内容不会探讨所介绍特性的每一种边缘情况或细节。你可以在参考文章中找到特定概念的更多细节。

  • 参考文件

    导航栏中手册下方的参考部分旨在让你更深入地了解 TypeScript 的特定部分是如何工作的。你可以从上到下阅读,但每一部分都旨在对一个概念进行更深入的解释 —— 这意味着阅读起来可能是不连贯的。

# 非目标

本手册也是一份可以在几个小时内轻松阅读的简明文档。为了保持简洁,我们不会涵盖某些特定的主题。

确切地说,本手册没有完全介绍核心的 JavaScript 基础知识,比如函数、类和闭包等。在适当的情况下,我们会给出背景导读的链接供你了解相关概念。

本手册也不打算取代语言规范。在某些情况下,我们会跳过边缘案例或行为的正式描述,以带来更高层次、更易理解的解释。不过,仍然会有单独的参考页去更精确和正式地描述TypeScript 行为的方方面面。参考页不适用于不熟悉 TypeScript 的读者,因此它们可能会使用你尚未阅读过的高级术语或参考主题。

最后,除了必要的地方,本手册不会介绍 TypeScript 如何与其它工具交互。诸如如何使用Webpack、rollup、packet、react、babel、closure、lerna、rush、bazel、preact、vue、angular、svelte、jquery、warn 或 npm 去配置 TypeScript 等主题,不在手册的讨论范围之内 —— 你可以在网上其它地方找到这些资源。

# 开始

在开始阅读基础 (opens new window)之前,我们建议你先阅读下面的其中一个介绍页。这些介绍旨在强调 TypeScript 和你喜欢的编程语言之间关键的相似性和差异性,并澄清这些语言特有的常见误解。