TypeScript 编译配置

2022/01/20 posted in  JS CSS HTML
Tags:  #JavaScript

不使用配置文件

  1. 在命令中指定输入文件
tsc app.ts
  1. 添加 -w 参数,持续监控文件变化并自动编译
tsc app.ts -w

使用配置文件

概述

如果一个目录下存在一个 tsconfig.json 文件,那么意味着这个目录是 TypeScript 项目的根目录。tsconfig.json 文件中指定了用来编译这个项目的文件和编译选项。使用 tsconfig.json 可通过以下方式编译:

  1. 不带任何输入文件的情况下调用 tsc,编译器会从当前目录开始去查找 tsconfig.json 文件,逐级向上搜索父目录。
  2. 不带任何输入文件的情况下调用 tsc,且使用命令行参数 --project(或-p)指定一个包含 tsconfig.json 文件的目录。

当命令行上指定了输入文件时,tsconfig.json 文件会被忽略。

示例

tsconfig.json 示例文件

{
  "compilerOptions": {
    "module": "commonjs",
    "strict": true,
    "removeComments": true,
    "preserveConstEnums": true,
    "outDir": "dist"
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}

"include" 和 "exclude" 属性指定一个文件 glob 匹配模式列表。 支持的 glob 通配符有:

  • * 匹配 0 或多个字符(不包括目录分隔符)
  • ? 匹配一个任意字符(不包括目录分隔符)
  • **/ 递归匹配任意子目录

如果一个 glob 模式里的某部分只包含 *.*,那么仅有支持的文件扩展名类型被包含在内(比如默认.ts.tsx,和.d.ts,如果 allowJs 设置为 true 还包含.js.jsx)。

部分 compilerOptions 属性

"compilerOptions" 可以被忽略,这时编译器会使用默认值。在这里查看完整的编译器选项列表。

编译选项 类型 默认值 描述
target string "ES3" 指定 ECMAScript 目标版本。
module string target === "ES6" ? "ES6" : "commonjs" 指定生成哪个模块系统代码。
outDir string 重定向输出目录。
allowJs boolean false 允许编译 javascript 文件。
checkJs boolean false 在 .js 文件中报告错误。与 allowJs 配合使用。
removeComments boolean false 删除所有注释,除了以 /!* 开头的版权信息。
noEmit boolean false 不生成输出文件。
noEmitOnError boolean false 报错时不生成输出文件。
alwaysStrict boolean false 以严格模式解析并为每个目标文件生成 "use strict" 语句。
noImplicitAny boolean false 在表达式和声明上有隐含的 any 类型时报错。
noImplicitThis boolean false 当 this 表达式的值为 any 类型的时候报错。
strictNullChecks boolean false 在严格的 null 检查模式下,null 和 undefined 值不包含在任何类型里,只允许用它们自己和 any 来赋值(有个例外,undefined 可以赋值到 void)。
strict boolean false 启用所有严格类型检查选项。启用 strict 相当于启用 noImplicitAny, noImplicitThis, alwaysStrict, strictNullChecks, strictFunctionTypes, strictPropertyInitialization。