TypeScript 入门
请支持本书:购买捐赠
(广告,请不要屏蔽。)

4 TypeScript 是如何工作的?鸟瞰



本章从宏观角度介绍 TypeScript 的工作原理:典型的 TypeScript 项目结构是什么?如何编译以及编译什么?我们如何使用 IDE 编写 TypeScript 代码?

4.1 TypeScript 项目的结构

这是 TypeScript 项目的一种可能的目录结构

typescript-project/
  dist/
  ts/
    src/
      main.ts
      util.ts
    test/
      util_test.ts
  tsconfig.json

说明

4.1.1 tsconfig.json

tsconfig.json 的内容如下所示

{
  "compilerOptions": {
    "rootDir": "ts",
    "outDir": "dist",
    "module": "commonjs",
    ···
  }
}

我们已经指定了

4.2 通过集成开发环境 (IDE) 编写 TypeScript 代码

两个流行的 JavaScript IDE 是

本节中的观察结果是关于 Visual Studio Code 的,但也可能适用于其他 IDE。

需要注意的一个重要事实是,Visual Studio Code 以两种独立的方式处理 TypeScript 源代码

4.3 TypeScript 编译器生成的其他文件

给定一个 TypeScript 文件 main.ts,TypeScript 编译器可以生成几种工件。最常见的是

TypeScript 通常不是通过 .ts 文件交付的,而是通过 .js 文件和 .d.ts 文件交付的

源映射为 main.js 中输出代码的每个部分指定了 main.ts 中输入代码的哪个部分生成了它。除其他外,此信息使运行时环境能够执行 JavaScript 代码,同时在错误消息中显示 TypeScript 代码的行号。

4.3.1 为了使用 TypeScript 中的 npm 包,我们需要类型信息

npm 注册表是一个巨大的 JavaScript 代码库。如果我们想在 TypeScript 中使用 JavaScript 包,我们需要它的类型信息

DefinitelyTyped 的声明文件位于 @types 命名空间中。因此,如果我们需要一个包(例如 lodash)的声明文件,我们必须安装 @types/lodash 包。

4.4 将 TypeScript 编译器用于纯 JavaScript 文件

TypeScript 编译器也可以处理纯 JavaScript 文件

这是一个 JSDoc 注释的示例,它为函数 add() 提供了静态类型信息

/**
 * @param {number} x - The first operand
 * @param {number} y - The second operand
 * @returns {number} The sum of both operands
 */
function add(x, y) {
  return x + y;
}

更多信息:TypeScript 手册中的JavaScript 文件的类型检查